The base stream is not writable (GZipStream) - C#
Формулировка задачи:
Привет всем. Мне нужно через некоторый период времени добавлять в архив файлы. Делаю это так:
После первого прохода таймера файл архивируется, но на второй такт таймера - ошибка : The base stream is not writable на Как решить проблему?
compStream = new GZipStream(destFile, CompressionMode.Compress); sourceFile = File.OpenRead(@"C:\Temp\filename); try { int value = sourceFile.ReadByte(); while (value != -1) { compStream.WriteByte((byte)value); value = sourceFile.ReadByte(); } sourceFile.Dispose(); compStream.Dispose(); compStream.Close(); File.Delete(@"C:\Temp\filename); } catch { }
compStream = new GZipStream(destFile, CompressionMode.Compress);
Решение задачи: «The base stream is not writable (GZipStream)»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Screener { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public Image ScrImage; public string filename = SystemInformation.UserName.ToString() + "_" + Environment.MachineName.ToString(); FileStream destFile; FileStream sourceFile; GZipStream compStream ; private void Form1_Load(object sender, EventArgs e) { if (File.Exists(@"C:\Temp\Screener\zip.zip")) { DirectoryInfo dirInfo = new DirectoryInfo(@"C:\Temp\Screener\"); foreach (FileInfo file in dirInfo.GetFiles()) { file.Delete(); } destFile = File.Create(@"C:\Temp\Screener\zip.zip"); } else { Directory.CreateDirectory(@"C:\Temp\Screener"); destFile = File.Create(@"C:\Temp\Screener\zip.zip"); } } public Bitmap ImageFromScreen() { Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); using (var gr = Graphics.FromImage(bmp)) { gr.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size); } return bmp; } private void timer1_Tick(object sender, EventArgs e) { compStream = new GZipStream(destFile, CompressionMode.Compress); string datescr = System.DateTime.Now.ToString().Replace(":", "."); ScrImage = ImageFromScreen(); ScrImage.Save(@"C:\Temp\Screener\" + datescr + filename, System.Drawing.Imaging.ImageFormat.Jpeg); ScrImage.Dispose(); sourceFile = File.OpenRead(@"C:\Temp\Screener\" + datescr + filename); try { int value = sourceFile.ReadByte(); while (value != -1) { compStream.WriteByte((byte)value); value = sourceFile.ReadByte(); } sourceFile.Dispose(); compStream.Dispose(); compStream.Close(); File.Delete(@"C:\Temp\Screener\" + datescr + filename); } catch(Exception ex) {MessageBox.Show(ex.ToString()); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д