Пример #1
0
 public override void SetLength(long value)
 {
     try
     {
         this.backend.Size = (ulong)value;
     }
     catch (Exception ex)
     {
         throw FileStream.RethrowException(ex);
     }
 }
Пример #2
0
 public override void Flush()
 {
     try
     {
         WindowsRuntimeSystemExtensions.AsTask <bool>(this.backend.FlushAsync()).Wait();
     }
     catch (Exception ex)
     {
         throw FileStream.RethrowException(ex);
     }
 }
Пример #3
0
        public override long Seek(long offset, SeekOrigin origin)
        {
            try
            {
                switch (origin)
                {
                case SeekOrigin.Begin:
                    if (offset > (long)this.backend.Size)
                    {
                        offset = (long)this.backend.Size;
                        break;
                    }
                    else
                    {
                        break;
                    }

                case SeekOrigin.Current:
                    if ((long)this.backend.Position + offset > (long)this.backend.Size)
                    {
                        offset = (long)this.backend.Position + offset;
                        break;
                    }
                    else
                    {
                        break;
                    }

                case SeekOrigin.End:
                    if (offset >= 0L)
                    {
                        offset = (long)this.backend.Size;
                        break;
                    }
                    else
                    {
                        offset += (long)this.backend.Size;
                        break;
                    }
                }
                if (offset < 0L)
                {
                    offset = 0L;
                }
                this.backend.Seek((ulong)offset);
                return(offset);
            }
            catch (Exception ex)
            {
                throw FileStream.RethrowException(ex);
            }
        }
Пример #4
0
        public FileStream(string file, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options)
        {
            try
            {
                this.fileOptions = options;
                this.name        = file;
                this.CheckAccess(mode, access);
                StorageFile storageFile;
                switch (mode)
                {
                case FileMode.CreateNew:
                case FileMode.Create:
                case FileMode.OpenOrCreate:
                case FileMode.Append:
                    storageFile = FileStream.CreateFile(file, mode, access);
                    break;

                case FileMode.Open:
                case FileMode.Truncate:
                    storageFile = FileStream.OpenFile(file, mode, access);
                    break;

                default:
                    throw new ArgumentException("Unknown file mode");
                }
                IAsyncOperation <IRandomAccessStream> source = storageFile.OpenAsync(FileStream.GetAccessMode(access));
                WindowsRuntimeSystemExtensions.AsTask <IRandomAccessStream>(source).Wait();
                this.backend = (FileRandomAccessStream)source.GetResults();
                if (mode == FileMode.Truncate)
                {
                    this.backend.Size = 0UL;
                }
                else
                {
                    if (mode != FileMode.Append)
                    {
                        return;
                    }
                    this.backend.Seek(this.backend.Size);
                }
            }
            catch (Exception ex)
            {
                throw FileStream.RethrowException(ex);
            }
        }
Пример #5
0
 public override int Read(byte[] buffer, int offset, int count)
 {
     try
     {
         Windows.Storage.Streams.Buffer buffer1 = new Windows.Storage.Streams.Buffer((uint)count);
         WindowsRuntimeSystemExtensions.AsTask <IBuffer, uint>(this.backend.ReadAsync((IBuffer)buffer1, (uint)count, InputStreamOptions.ReadAhead)).Wait(this.readTimeout);
         int        length     = (int)buffer1.Length;
         DataReader dataReader = DataReader.FromBuffer((IBuffer)buffer1);
         bool       flag       = offset == 0 && buffer.Length == count && length == count;
         byte[]     numArray   = flag ? buffer : new byte[length];
         dataReader.ReadBytes(numArray);
         if (!flag)
         {
             Array.Copy((Array)numArray, 0, (Array)buffer, offset, numArray.Length);
         }
         return(length);
     }
     catch (Exception ex)
     {
         throw FileStream.RethrowException(ex);
     }
 }
Пример #6
0
 public override void Write(byte[] buffer, int offset, int count)
 {
     try
     {
         Windows.Storage.Streams.Buffer buffer1 = new Windows.Storage.Streams.Buffer((uint)count);
         byte[] numArray;
         if (offset == 0 && count == buffer.Length)
         {
             numArray = buffer;
         }
         else
         {
             numArray = new byte[count];
             Array.Copy((Array)buffer, offset, (Array)numArray, 0, count);
         }
         DataWriter dataWriter = new DataWriter();
         dataWriter.WriteBytes(numArray);
         WindowsRuntimeSystemExtensions.AsTask <uint, uint>(this.backend.WriteAsync(dataWriter.DetachBuffer())).Wait(this.writeTimeout);
     }
     catch (Exception ex)
     {
         throw FileStream.RethrowException(ex);
     }
 }