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 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); } }
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; } }
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; } }