C#实战032:文件读写并显示文件读取进度
1、首先我们定义个源文件路径,并获取到文件名,然后制定一个存储路径并获取路径中的文件名,将其与提取的文件名进行比对,如果已存在我们就将其删除掉。string filepath = @"E:\Adobe Photoshop CS6.zip";string filename = Path.GetFileName(filepath);string saveDir = @"E:\UG";string savePath = saveDir +"\\"+ filename;DirectoryInfo sp = new DirectoryInfo(saveDir);FileSystemInfo[] fi = sp.GetFileSystemInfos();foreach (FileSystemInfo i in fi){ if (i.Name == filename) { i.Delete(); }}

3、现在我们来绘制进度条背景,我们设置进度条 长度为50,颜色为绿色,直接打印空格填充背景即可。ConsoleColor colorBack = Console.Background潮贾篡绐Color;ConsoleColor colorFore = Console.ForegroundColor;if (count > 0){ //绘制读条背景界面 Console.WriteLine("********************* Loading *********************"); Console.BackgroundColor = ConsoleColor.DarkCyan;//设置背景色 for (int i = 0; ++i <= 50; ) { Console.Write(" ");//打印空格 } Console.WriteLine(" "); Console.BackgroundColor = colorBack;//还原背景色 Console.WriteLine("0%"); Console.WriteLine("***************************************************");}

4、接下来我们开始实现读写功能,获取文件的开始位醅呓择锗置,判断下剩余文件大小,如果不足一个bytes空间,则num等于实际剩余空间大小,否则就以每个bytes大小传输,直到剩余大小为0结束,同时我们进行写入操作,将文件分段写入到指定文件目录中去。while (end > 0) { fs.Position = start; if (end < maxlength) num = fs.Read(bytes, 0, Convert.ToInt32(end));//读取文件 else num = fs.Read(bytes, 0, maxlength);//读取文件 wr.Write(bytes, 0, num);//写入文件 if (num == 0) break; start += num; end -= num; } fs.Close(); wr.Close(); fs.Dispose(); Console.WriteLine(" Finished Reading !"); Console.ReadLine();}

6、我们将传输的值进行计算,得到小数再将其乘上100换算成百分数并取整数Math.Ceiling(percent * 100),接下来就是更新进度条了,跟上面一样,我们定义背景色,光标移动随着我们的传输比例进行移动即可。

7、最后别忘了关闭文件流,否则文件写入时会出现错误(少了一个bytes的内容导致文件错误,无法使用),切记。