How to make a file copy progress in C#
By FoxLearn 2/20/2024 6:34:33 AM 394
To implement file copy progress in C#, you can use the File.Copy method along with FileStream to read from the source file and write to the destination file while monitoring the progress.
You can achieve this by reading and writing chunks of data at a time and updating the progress accordingly.
This example shows how you can copy a file with progress tracking:
using System; using System.IO; class Program { static void Main(string[] args) { string sourceFilePath = @"C:\path\to\source\file.txt"; string destinationFilePath = @"C:\path\to\destination\file.txt"; CopyFileWithProgress(sourceFilePath, destinationFilePath); Console.WriteLine("File copy completed."); } //c# file copy progress static void CopyFileWithProgress(string sourceFilePath, string destinationFilePath) { const int bufferSize = 8192; // 8 KB buffer size, you can adjust it as per your requirement using (var sourceStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read)) using (var destinationStream = new FileStream(destinationFilePath, FileMode.Create, FileAccess.Write)) { byte[] buffer = new byte[bufferSize]; int bytesRead; long totalBytesCopied = 0; long fileSize = sourceStream.Length; while ((bytesRead = sourceStream.Read(buffer, 0, bufferSize)) > 0) { destinationStream.Write(buffer, 0, bytesRead); totalBytesCopied += bytesRead; // Calculate progress double progress = (double)totalBytesCopied / fileSize * 100; Console.WriteLine($"Progress: {progress:F2}%"); } } } }
- We open the source file and destination file using FileStream
.
- We read from the source file in chunks and write those chunks to the destination file until we've read the entire file.
- We calculate the progress by comparing the total bytes copied with the total file size and print the progress to the console.
You can adjust the buffer size according to your requirements and even implement a progress bar or update a UI if you are working with a graphical application.
- How to fix 'Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on'
- How to use BlockingCollection in C#
- Calculating the Distance Between Two Coordinates in C#
- Could Not Find an Implementation of the Query Pattern
- Fixing Invalid Parameter Type in Attribute Constructor
- Objects added to a BindingSource’s list must all be of the same type
- How to use dictionary with tuples in C#
- How to convert a dictionary to a list in C#
Categories
Popular Posts
11 Things You Didn't Know About Cloudflare
12/19/2024