public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize) { var filePath = Path.Combine(SystemPath, name); var fs = OpenStream(filePath, FileMode.Create, access, share, bufferSize); var ret = new CreateStreamResult() { EntryBase = StorageProviderEntryFromPath(filePath), Stream = fs }; return(ret); }
public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize) { var fmode = FileMode.Append; switch (mode) { case StreamMode.Append: fmode = FileMode.Append; break; case StreamMode.Open: fmode = FileMode.Open; break; case StreamMode.Truncate: fmode = FileMode.Truncate; break; } var filePath = PathFromUri(uri); return(OpenStream(filePath, fmode, access, share, bufferSize)); }
public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize) { if (uri is null) { throw new ArgumentNullException(nameof(uri)); } if (mode != StreamMode.Open) { throw new NotSupportedException($"ZipStorgeProvider does not support mode: {mode}"); } lock (_zipArchive) { var path = PathFromUri(uri); var stream = _zipArchive.GetEntry(path).Open(); return(stream); } }
public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize = 0) { var resolver = Context.ContentResolver; var androidUri = DocumentsContract.CreateDocument(resolver, AndroidUri, null, name); var fs = OpenStream(androidUri, StreamMode.Open, access, share, bufferSize); var ret = new CreateStreamResult() { Stream = fs, EntryBase = new StorageEntryBase { Name = name, LastWriteTime = DateTime.Now, Size = 0, IsStorage = false, Uri = AndroidUriToUri(androidUri) } }; return(ret); }
private Stream OpenStream(string filePath, FileMode fmode, StreamAccess access, StreamShare share, int _) { var faccess = FileAccess.Read; switch (access) { case StreamAccess.Read: faccess = FileAccess.Read; break; case StreamAccess.ReadWrite: faccess = FileAccess.ReadWrite; break; case StreamAccess.Write: faccess = FileAccess.Write; break; } FileShare fshare = FileShare.None; switch (share) { case StreamShare.None: fshare = FileShare.None; break; case StreamShare.Read: fshare = FileShare.Read; break; case StreamShare.ReadWrite: fshare = FileShare.ReadWrite; break; case StreamShare.Write: fshare = FileShare.Write; break; } return(File.Open(filePath, fmode, faccess, fshare)); }
private Stream OpenStream(Android.Net.Uri androidUri, StreamMode mode, StreamAccess access, StreamShare _, int bufferSize = 0) { if (access == StreamAccess.ReadWrite) { throw new ArgumentException("StreamMode.ReadWrite does not support!"); } var resolver = Context.ContentResolver; string streamMode = ""; if (bufferSize == 0) { bufferSize = 4096; } switch (mode) { case StreamMode.Append: if (access == StreamAccess.Read) { throw new ArgumentException("StreamMode.Append only support StreamAccess.write access."); } if (access == StreamAccess.Write) { streamMode = "wa"; } if (access == StreamAccess.ReadWrite) { throw new ArgumentException("StreamMode.Append only support StreamAccess.write access."); } break; case StreamMode.Open: if (access == StreamAccess.Read) { streamMode = "r"; } if (access == StreamAccess.Write) { streamMode = "rw"; //rw instead w; because w does not support seek } break; case StreamMode.Truncate: if (access == StreamAccess.Read) { throw new ArgumentException("StreamMode.Truncate does not support StreamAccess.read access."); } if (access == StreamAccess.ReadWrite) { throw new ArgumentException("StreamMode.Truncate does not support StreamAccess.readWrite access."); } if (access == StreamAccess.Write) { streamMode = "rwt"; } break; } var parcelFD = resolver.OpenFileDescriptor(androidUri, streamMode); var stream = new ChannelStream(parcelFD, streamMode); var ret = (Stream) new BufferedStream(stream, bufferSize); return(ret); }
public Stream OpenStream(Uri uri, StreamMode mode, StreamAccess access, StreamShare share, int bufferSize = 0) { return(OpenStream(AndroidUriFromChildNetUri(uri), mode, access, share, bufferSize)); }
public CreateStreamResult CreateStream(string name, StreamAccess access, StreamShare share, int bufferSize) => throw new NotSupportedException();