public override void SetLength(long value) { try { this.backend.Size = (ulong)value; } catch (Exception ex) { throw FileStream.RethrowException(ex); } }
public override void Flush() { try { WindowsRuntimeSystemExtensions.AsTask <bool>(this.backend.FlushAsync()).Wait(); } catch (Exception ex) { throw FileStream.RethrowException(ex); } }
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); } }
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); } }
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); } }
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); } }