Exemplo n.º 1
0
        internal Stream OpenWrite(string path, WriteMode mode)
        {
            path = NormalizeAbsolutePath(path);
            if (mode == WriteMode.Truncate)
            {
                return(ConnectedClient.PutFile(path));
            }
            else if (mode == WriteMode.Append)
            {
                return(ConnectedClient.AppendFile(path));
            }
            else if (mode == WriteMode.Overwrite)
            {
                var bytes = default(byte[]);
                using (var readStream = ConnectedClient.GetFile(path))
                {
                    bytes = StreamExtensions.ReadStreamToEnd(readStream);
                }

                var stream = new InMemory.InMemoryStream((data) =>
                {
                    using (var remoteStream = ConnectedClient.PutFile(path))
                    {
                        remoteStream.Write(data, 0, data.Length);
                    }
                }, bytes);

                return(stream);
            }
            else
            {
                throw new NotSupportedException();
            }
        }
        internal Stream OpenWrite(string virtualPath, WriteMode mode)
        {
            Action <byte[]> onClose = (data) => ConnectedClient.WriteAllBytes(virtualPath, data);

            if (mode == WriteMode.Truncate)
            {
                ConnectedClient.DeleteFile(virtualPath);
                return(new InMemory.InMemoryStream(onClose));
            }
            else if (mode == WriteMode.Overwrite)
            {
                return(new InMemory.InMemoryStream(onClose));
            }
            else
            {
                var bytes = default(byte[]);
                using (var readStream = GetStream(virtualPath))
                {
                    bytes = StreamExtensions.ReadStreamToEnd(readStream);
                }
                var stream = new InMemory.InMemoryStream(onClose, bytes);
                stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
                return(stream);
            }
        }
Exemplo n.º 3
0
        internal Stream OpenWrite(string virtualPath, string fileName, WriteMode mode)
        {
            Action <byte[]> onClose = (data) => Client.UploadFile(virtualPath, fileName, data);

            if (mode == WriteMode.Truncate)
            {
                return(new InMemory.InMemoryStream(onClose));
            }
            else
            {
                var bytes  = GetBytes(CombineVirtualPath(virtualPath, fileName));
                var stream = new InMemory.InMemoryStream(onClose, bytes);
                if (mode == WriteMode.Append)
                {
                    stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
                }
                return(stream);
            }
        }
Exemplo n.º 4
0
 public override Stream OpenWrite(WriteMode mode)
 {
     if (mode == WriteMode.Truncate)
     {
         // ! Workaround
         // if don't read before truncate, we get "a invalid stored block lengths" Exception from Ionic.Zip when reading after
         this.ReadAllBytes();
         return new InMemory.InMemoryStream(ReplaceBytes);
     }
     else
     {
         var bytes = this.ReadAllBytes();
         var stream = new InMemory.InMemoryStream(ReplaceBytes, bytes);
         if (mode == WriteMode.Append)
         {
             stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
         }
         return stream;
     }
 }
Exemplo n.º 5
0
 public override Stream OpenWrite(WriteMode mode)
 {
     if (mode == WriteMode.Truncate)
     {
         // ! Workaround
         // if don't read before truncate, we get "a invalid stored block lengths" Exception from Ionic.Zip when reading after
         this.ReadAllBytes();
         return(new InMemory.InMemoryStream(ReplaceBytes));
     }
     else
     {
         var bytes  = this.ReadAllBytes();
         var stream = new InMemory.InMemoryStream(ReplaceBytes, bytes);
         if (mode == WriteMode.Append)
         {
             stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
         }
         return(stream);
     }
 }
        internal Stream OpenWrite(string virtualPath, string fileName, WriteMode mode)
        {
            Action<byte[]> onClose = (data) => Client.UploadFile(virtualPath, fileName, data);

            if (mode == WriteMode.Truncate)
            {
                return new InMemory.InMemoryStream(onClose);
            }
            else
            {
                var bytes = GetBytes(CombineVirtualPath(virtualPath, fileName));
                var stream = new InMemory.InMemoryStream(onClose, bytes);
                if (mode == WriteMode.Append)
                {
                    stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
                }
                return stream;
            }
        }
        internal Stream OpenWrite(string virtualPath, WriteMode mode)
        {
            Action<byte[]> onClose = (data) => ConnectedClient.WriteAllBytes(virtualPath, data);

            if (mode == WriteMode.Truncate)
            {
                ConnectedClient.DeleteFile(virtualPath);
                return new InMemory.InMemoryStream(onClose);
            }
            else if (mode == WriteMode.Overwrite)
            {
                return new InMemory.InMemoryStream(onClose);
            }
            else
            {
                var bytes = default(byte[]);
                using(var readStream = GetStream(virtualPath))
                {
                    bytes = StreamExtensions.ReadStreamToEnd(readStream);
                }
                var stream = new InMemory.InMemoryStream(onClose, bytes);
                stream.Seek(stream.Length, System.IO.SeekOrigin.Begin);
                return stream;
            }
        }
 internal System.IO.Stream OpenWrite(string virtualPath, WriteMode mode)
 {
     if (mode == WriteMode.Truncate)
     {
         return ConnectedClient.PutFile(virtualPath);
     }
     else if (mode == WriteMode.Append)
     {
         return ConnectedClient.AppendFile(virtualPath);
     }
     else // if (mode == WriteMode.Overwrite)
     {
         var bytes = default(byte[]);
         using (var readStream = ConnectedClient.GetFile(virtualPath))
         {
             bytes = StreamExtensions.ReadStreamToEnd(readStream);
         }
         var stream = new InMemory.InMemoryStream((data) => CreateFileInternal(virtualPath, data), bytes);
         return stream;
     }
 }