Пример #1
0
        public FileHandle Add(SafeOpenMode mode, SRCCompatibilityMode srcCompatibilityMode, Stream stream)
        {
            var h = new FileHandle(++_currentHandle, stream, mode, srcCompatibilityMode);

            _handles.Add(h.Handle, h);
            return(h);
        }
Пример #2
0
 public static Stream ToTextStream(this Stream stream, SRCCompatibilityMode srcCompatibilityMode)
 {
     if (srcCompatibilityMode.HasFlag(SRCCompatibilityMode.Read))
     {
         // XXX あまりいい同期化ではないはず
         // Streamには同期メソッドがあるはずなので、同期処理したいなら同期メソッドを一貫して使うメソッドにするのがよさそう
         return(Task.Run(() => stream.ToUTF8Async()).Result);
     }
     else
     {
         return(stream);
     }
 }
Пример #3
0
 public FileHandle(int handle, Stream stream, SafeOpenMode mode, SRCCompatibilityMode srcCompatibilityMode)
 {
     Handle = handle;
     Stream = stream;
     if (mode == SafeOpenMode.Read)
     {
         Reader = new StreamReader(stream.ToTextStream(srcCompatibilityMode));
     }
     else
     {
         Writer = new StreamWriter(stream, srcCompatibilityMode.HasFlag(SRCCompatibilityMode.Write) ? Encoding.GetEncoding(932) : Encoding.UTF8);
     }
 }
Пример #4
0
 public static Stream OpenText(this IFileSystem fileSystem, SRCCompatibilityMode srcCompatibilityMode, params string[] paths)
 {
     return(fileSystem.Open(paths).ToTextStream(srcCompatibilityMode));
 }