Torna al Thread

{ // operazione per zippare il file mps // Qua ti ho messo la funzione String.Format, impara ad usarla, perchè nel metodo che hai utilizzato tu, ogni volta che si concatena una stringa, ne viene allocata in memoria (stack) una nuova, per poi andarci a mettere l'unione. Con String.Format invece il framework, prima calcola i valori da mettere nella stringa e poi utilizzando i placeholder sa subito dove metterli e crea così la stringa in un solo colpo :) nomefileZip = String.Format(@"{0}\{1}_{2}.ZIP", FileZip, conce, DateTime.Now.ToString("yyyyMMdd")); try // Praticamente questo blocco che ho inserito è quello che fa il costrutto using, che però attenzione perchè assicura solo che venga richiamato il metodo .Dispose dell'oggetto IDisposable, e nient'altro...Però ad esempio per i FileStream la .Dispose chiama a sua volta anche la close, e quindi siamo sicuri che la using è sufficiente anche a rilasciare le risorse fisiche trattenute dall'os (handle) { using (FileStream fileZip = File.Create(nomefileZip)) { ZipOutputStream MyNewZip = new ZipOutputStream(fileZip); foreach (string myfile in myfiles) // quindi dall'array dei file lavoro con un file per volta! (myfile) { using (FileStream fileStr = File.OpenRead(myfile)) { byte[] valByte = new byte[fileStr.Length]; fileStr.Read(valByte, 0, valByte.Length); ZipEntry myzipentry = new ZipEntry(Path.GetFileName(myfile)); MyNewZip.PutNextEntry(myzipentry); MyNewZip.Write(valByte, 0, valByte.Length); } } } } finally { if (MyNewZip != null) { MyNewZip.Finish(); MyNewZip.Close(); // Se c'è chiama anche la dispose //MyNewZip.Dispose(); } } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5