示例#1
0
        /// <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;
                }
        }
示例#2
0
        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;
                }
        }
示例#3
0
        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);
                    }
                }
        }