public async Task <Stream> OpenFileAsync(string path, StorageFileMode mode, StorageFileAccess access) { var folderPath = Path.GetDirectoryName(path); var fileName = Path.GetFileName(path); var accessMode = FileAccessMode.ReadWrite; switch (access) { case StorageFileAccess.Read: accessMode = FileAccessMode.Read; break; case StorageFileAccess.ReadWrite: accessMode = FileAccessMode.ReadWrite; break; case StorageFileAccess.Write: accessMode = FileAccessMode.ReadWrite; break; default: throw new ArgumentOutOfRangeException("access"); } StorageFile file; switch (mode) { case StorageFileMode.Append: case StorageFileMode.Open: case StorageFileMode.OpenOrCreate: case StorageFileMode.Truncate: file = await GetFileAsync(path, false); break; case StorageFileMode.Create: case StorageFileMode.CreateNew: { StorageFolder folder = await CreateFolderPathAsync(folderPath); file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); break; } default: throw new ArgumentOutOfRangeException("mode"); } if (file == null) { return(null); } var stream = await file.OpenAsync(accessMode); _openedStreams.Add(stream.AsStream()); return(stream.AsStream()); }
public Stream OpenFile(string path, StorageFileMode mode, StorageFileAccess access) { FileMode fileMode = FileMode.Append; FileAccess fileAccess = FileAccess.Read; switch (mode) { case StorageFileMode.Append: fileMode = FileMode.Append; break; case StorageFileMode.Create: fileMode = FileMode.Create; break; case StorageFileMode.CreateNew: fileMode = FileMode.CreateNew; break; case StorageFileMode.Open: fileMode = FileMode.Open; break; case StorageFileMode.OpenOrCreate: fileMode = FileMode.OpenOrCreate; break; case StorageFileMode.Truncate: fileMode = FileMode.Truncate; break; } switch (access) { case StorageFileAccess.Read: fileAccess = FileAccess.Read; break; case StorageFileAccess.ReadWrite: fileAccess = FileAccess.ReadWrite; break; case StorageFileAccess.Write: fileAccess = FileAccess.Write; break; } if (access == StorageFileAccess.Write || access == StorageFileAccess.ReadWrite) switch (mode) { case StorageFileMode.Create: case StorageFileMode.CreateNew: case StorageFileMode.OpenOrCreate: CreateFoldersIfNotExist(path, true); break; } IsolatedStorageFileStream isfs = iso.OpenFile(path, fileMode, fileAccess); return isfs; }
public Stream OpenFile(string path, StorageFileMode mode, StorageFileAccess access) { throw new NotImplementedException(); }
public Stream OpenFile(string path, StorageFileMode mode, StorageFileAccess access) { path = path.Replace('\\', '/'); FileMode fileMode = FileMode.Append; FileAccess fileAccess = FileAccess.Read; switch (mode) { case StorageFileMode.Append: fileMode = FileMode.Append; break; case StorageFileMode.Create: fileMode = FileMode.Create; break; case StorageFileMode.CreateNew: fileMode = FileMode.CreateNew; break; case StorageFileMode.Open: fileMode = FileMode.Open; break; case StorageFileMode.OpenOrCreate: fileMode = FileMode.OpenOrCreate; break; case StorageFileMode.Truncate: fileMode = FileMode.Truncate; break; } switch (access) { case StorageFileAccess.Read: fileAccess = FileAccess.Read; break; case StorageFileAccess.ReadWrite: fileAccess = FileAccess.ReadWrite; break; case StorageFileAccess.Write: fileAccess = FileAccess.Write; break; } if (access == StorageFileAccess.Write || access == StorageFileAccess.ReadWrite) switch (mode) { case StorageFileMode.Create: { if (!Directory.Exists(BasePath + GetPath(path))) Directory.CreateDirectory(BasePath + GetPath(path)); var file = File.Create(BasePath + path); file.Close(); } break; case StorageFileMode.CreateNew: { if (!Directory.Exists(BasePath + GetPath(path))) Directory.CreateDirectory(BasePath + GetPath(path)); if (!File.Exists(BasePath + path)) { var file = File.Create(BasePath + path); file.Close(); } else throw new IOException(); } break; case StorageFileMode.OpenOrCreate: { if (!Directory.Exists(BasePath + GetPath(path))) Directory.CreateDirectory(BasePath + GetPath(path)); if (!File.Exists(BasePath + path)) { var file = File.Create(BasePath + path); file.Close(); } } break; } var stream = File.Open(BasePath + path, fileMode, fileAccess); openedStreams.Add(stream); return stream; }
public async Task<Stream> OpenFileAsync(string path, StorageFileMode mode, StorageFileAccess access) { var folderPath = Path.GetDirectoryName(path); var fileName = Path.GetFileName(path); var accessMode = FileAccessMode.ReadWrite; switch (access) { case StorageFileAccess.Read: accessMode = FileAccessMode.Read; break; case StorageFileAccess.ReadWrite: accessMode = FileAccessMode.ReadWrite; break; case StorageFileAccess.Write: accessMode = FileAccessMode.ReadWrite; break; default: throw new ArgumentOutOfRangeException("access"); } StorageFile file; switch (mode) { case StorageFileMode.Append: case StorageFileMode.Open: case StorageFileMode.OpenOrCreate: case StorageFileMode.Truncate: file = await GetFileAsync(path, false); break; case StorageFileMode.Create: case StorageFileMode.CreateNew: { StorageFolder folder = await CreateFolderPathAsync(folderPath); file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); break; } default: throw new ArgumentOutOfRangeException("mode"); } if (file == null) return null; var stream = await file.OpenAsync(accessMode); _openedStreams.Add(stream.AsStream()); return stream.AsStream(); }