public static FileMode ConvertFileOpenModeToCLR(FileOpenModeEnum value) { switch (value) { case FileOpenModeEnum.Append: return(FileMode.Append); case FileOpenModeEnum.Create: return(FileMode.Create); case FileOpenModeEnum.CreateNew: return(FileMode.CreateNew); case FileOpenModeEnum.Open: return(FileMode.Open); case FileOpenModeEnum.OpenOrCreate: return(FileMode.OpenOrCreate); case FileOpenModeEnum.Truncate: return(FileMode.Truncate); default: throw new ArgumentOutOfRangeException(nameof(value), value, null); } }
public static ФайловыйПоток Constructor(string filename, FileOpenModeEnum openMode, FileAccessEnum access, object bufferSize = null) { return(new ФайловыйПоток( filename, openMode, access, (int)bufferSize)); }
/// <summary> /// /// Открывает файл в заданном режиме с возможностью чтения и записи. /// Файл открывается в режиме разделяемого чтения. /// </summary> /// /// <param name="fileName"> /// Имя открываемого файла. </param> /// <param name="openingMode"> /// Режим открытия файла. </param> /// <param name="fileAccess"> /// Режим доступа к файлу. </param> /// <param name="bufferSize"> /// Размер буфера для операций с файлом. </param> /// /// <returns name="FileStream"> /// Специализированная версия объекта Поток для работы данными, расположенными в файле на диске. Предоставляет возможность чтения из потока, записи в поток и изменения текущей позиции. /// По умолчанию, все операции с файловым потоком являются буферизированными, размер буфера по умолчанию - 8 КБ. /// Размер буфера можно изменить, в том числе - полностью отключить буферизацию при вызове конструктора. /// Следует учитывать, что помимо буферизации существует кэширование чтения и записи файлов в операционной системе, на которое невозможно повлиять программно.</returns> /// public ФайловыйПоток Открыть(string fileName, FileOpenModeEnum openingMode, FileAccessEnum fileAccess, object bufferSize = null) { if (bufferSize == null) { return(ФайловыйПоток.Constructor(fileName, openingMode, fileAccess)); } else { return(ФайловыйПоток.Constructor(fileName, openingMode, fileAccess, bufferSize)); } }
public static ФайловыйПоток Constructor(string filename, FileOpenModeEnum openMode, object bufferSize = null) { if (bufferSize == null || bufferSize is int) { return(new ФайловыйПоток( filename, openMode, FileAccessEnum.ReadAndWrite, (int)bufferSize)); } else { // перегрузка методов не позволяет вызвать второй конструктор без доуточнения реальных типов return(Constructor( filename, openMode, FileAccessEnum.ReadAndWrite, bufferSize)); } }
public FileStreamContext(string filename, FileOpenModeEnum openMode, FileAccessEnum access, int bufferSize = 0) { FileName = filename; if (bufferSize == 0) { _underlyingStream = new FileStream(filename, FileStreamsManager.ConvertFileOpenModeToCLR(openMode), FileStreamsManager.ConvertFileAccessToCLR(access)); } else { _underlyingStream = new FileStream(filename, FileStreamsManager.ConvertFileOpenModeToCLR(openMode), FileStreamsManager.ConvertFileAccessToCLR(access), FileShare.Read, bufferSize); } _commonImpl = new GenericStreamImpl(_underlyingStream); }
public ФайловыйПоток(string filename, FileOpenModeEnum openMode, FileAccessEnum access, int bufferSize = 0) { ИмяФайла = filename; if (bufferSize == 0) { _underlyingStream = new FileStream(filename, МенеджерФайловыхПотоков.ConvertFileOpenModeToCLR(openMode), МенеджерФайловыхПотоков.ConvertFileAccessToCLR(access), FileShareForAccess(access)); } else { _underlyingStream = new FileStream(filename, МенеджерФайловыхПотоков.ConvertFileOpenModeToCLR(openMode), МенеджерФайловыхПотоков.ConvertFileAccessToCLR(access), FileShareForAccess(access), bufferSize); } _commonImpl = new GenericStreamImpl(_underlyingStream); }