/// <summary> /// Performs a buffered file stream transfer. /// </summary> /// <param name="Source"></param> /// <param name="Dest"></param> private void CopyFile(string Source, string Dest) { int bufferSize = 256000; byte[] buffer = new byte[bufferSize]; int bytesIn = 1; var currentFile = new FileInfo(Source); Progress.ResetProgress(); using (FileStream source = currentFile.OpenRead()) using (var dest = new FileStream(Dest, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write, bufferSize, FileOptions.None)) { Progress.BytesToTransfer = (int)source.Length; while (!(bytesIn < 1) && !cancelCopy) { bytesIn = source.Read(buffer, 0, bufferSize); if (bytesIn > 0) { dest.Write(buffer, 0, bytesIn); Progress.BytesMoved = bytesIn; } } buffer = null; } }
private void CopyFile(string source, string dest) { int bufferSize = 256000; byte[] buffer = new byte[bufferSize]; int bytesIn = 1; var sourceFile = new FileInfo(source); progress.ResetProgress(); using (var sourceStream = sourceFile.OpenRead()) using (var destStream = new FileStream(dest, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write, bufferSize, FileOptions.None)) { currentStatus.CurrentFileProgress = 1; progress.BytesToTransfer = sourceStream.Length; while (!(bytesIn < 1 | copyWorker.CancellationPending)) { bytesIn = sourceStream.Read(buffer, 0, bufferSize); if (bytesIn > 0) { destStream.Write(buffer, 0, bytesIn); progress.BytesMoved = bytesIn; } } buffer = null; } }
public void CompressDirectory(string inDir, string outDir) { string[] files = Directory.GetFiles(inDir, "*.*", SearchOption.AllDirectories); int iDirLen = inDir[inDir.Length - 1] == Path.DirectorySeparatorChar ? inDir.Length : inDir.Length + 1; Progress.ResetProgress(); Progress.BytesToTransfer = files.Length - 1; using (FileStream outFile = new FileStream(outDir, FileMode.Create, FileAccess.Write, FileShare.None, 256000)) using (GZipStream str = new GZipStream(outFile, CompressionLevel.Optimal)) { foreach (string filePath in files) { Progress.BytesMoved = 1; string sRelativePath = filePath.Substring(iDirLen); CompressFile(inDir, sRelativePath, str); } } }