Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 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();
        }