public static BufferedStream Open(string path, FileAccess access = FileAccess.Read) { Stream file; switch (access) { case FileAccess.Read: file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); break; case FileAccess.Write: case FileAccess.ReadWrite: file = File.Open(path, FileMode.Open, access, FileShare.None); break; default: throw new NotImplementedException($"{nameof(access)} mode is not implemented for {access}"); } try { return(new BufferedStream(file, BufferSize)); } catch { file?.Dispose(); throw; } }
private Stream OpenDocumentStream(IDocumentId documentId, FileAccess access, FileShare share) { GetDocumentInfo(documentId).ContentProvider?.ContentPreparation(documentId.DocumentId); var file = File.Open(documentId.DocumentId, FileMode.Open, access, share); try { return(SmartLowMemoryStream.Open(file)); } catch { file?.Dispose(); throw; } }
public IDocumentId MakeDocument(IContentManagerArenaId arena, INamedStream document) { if (document is null) { throw new ArgumentNullException(nameof(document)); } if (document.Stream is null) { throw new ArgumentNullException(nameof(document) + "." + nameof(document.Stream)); } var documentId = new DocumentIdImpl(arena); using (var content = File.Open(documentId.DocumentId, FileMode.Open, FileAccess.Write, FileShare.None)) { //document.Stream.Flush(); document.Stream.CopyTo(content); //content.Flush(); }; AddDocumentInfo(documentId, new DocumentInfo(document.Name, OnCloseArenaDeleteDocument, null)); return(documentId); }
public static Stream Open() { var innerStream = File.Open(Path.GetTempFileName(), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileOptions.DeleteOnClose); try { var outerStream = new BufferedStream(innerStream, BufferSize); try { return(new NotFlushingBufferOnDisposeStream(outerStream, innerStream)); } catch { outerStream.Dispose(); throw; } } catch { innerStream?.Dispose(); throw; } }