大文件拷贝

Thread th = new Thread(() =>
            { 

               // Directory.p

                if (!File.Exists(this.textBox1.Text))
                {
                    MessageBox.Show("拷贝的文件路劲有问题");
                    return;
                }
                else
                {

                    CheckForIllegalCrossThreadCalls = false;
                    using (FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open))
                    {
                        byte[] by = new byte[1024 * 1024];
                        long len = fs.Length;
                        int i = fs.Read(by, 0, by.Length);
                        long j = 0;

                        using (FileStream fw = new FileStream(this.textBox2.Text, FileMode.Create))
                        {

                            while (i != 0)
                            {
                                fw.Write(by, 0, i);
                                i = fs.Read(by, 0, by.Length);
                                j += i;
                                progressBar1.Value = (int)(j * 100 / len);

                            }
                        }

                    }
                    progressBar1.Value = 100;
                    this.button4.Text = "ok";
                    GC.Collect();
                }

            });

            th.Start();

  

时间: 2024-10-22 19:28:06

大文件拷贝的相关文章

C# IO操作(四)大文件拷贝(文件流的使用)、文件编码

     大文件拷贝(文件流的使用).文件编码 首先说一下大文件拷贝和文件流,因为计算机的内存资源是有限的,面对几个G甚至更大的文件,需要通过程序来完成拷贝,就需要用到文件流(因为我们无法做到把文件一次性加载到内存中:事实上,内存也不允许这么干),所以在C#中出现了内存流这个东西.先看下面的内容,File类中的常用读取文件方法会将文件内容一次性全部加载到内存中: 1 string sPath = @"C:\Users\Chens-PC\Desktop\Nginx.txt"; 2 //F

C# 学习黑马.Net视频教程,大文件拷贝

设计器代码: namespace 大文件拷贝 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disposing&

C#谈文件操作NO2(大文件拷贝)

上一篇介绍了文件的一些基本操作,介绍了文件的加密操作.这一篇介绍一些文件流的操作 文件流类FileStream实现大文件拷贝 大文件拷贝之所以用文件流来进行拷贝,主要是由于如果用File静态类来执行拷贝就是将整个文件整体传输,对于一个好几个G的大文件会造成内存占用大,运行慢,效率不高.所以用到文件流拷贝.文件流拷贝可以设置拷贝的二进制流缓冲区的大小,然后根据缓冲区的大小来一点一点拷贝,就类似与U盘拷贝文件到电脑似的. 下面就介绍一下如何实现拷贝 source是源文件路径,target是目标文件路

大文件拷贝,试试NIO的内存映射

最近项目里有个需求需要实现文件拷贝,在java中文件拷贝流的读写,很容易就想到IO中的InputStream和OutputStream之类的,但是上网查了一下文件拷贝也是有很多种方法的,除了IO,还有NIO.Apache提供的工具类.JDK自带的文件拷贝方法 IO拷贝 public class IOFileCopy { private static final int BUFFER_SIZE = 1024; public static void copyFile(String source, S

高效的大文件拷贝

当你要两台机器之间拷贝一些大文件的时候,把nc(netcat)和pigz(parallel gzip)组合起来会是一个简单和高效的选择.不过,如果要把这些文件同时分发到多台机器,有什么好法子吗?在Tumblr,这还算蛮常见的需求,比如我们要快速的同时增加几台MySQL Slave的时候. 你可以从源机器逐个拷贝到逐台目标机器,但是往往时间也是成倍的.或者你也可以同时从源机器同时拷贝到多个目标机器,但是受制于源机器的带宽等因素,速度并不见得真的很快. 还好,借助一些UNIX工具可以做的更好.把te

C#大文件的拷贝

大文件拷贝原理:向内存申请1M空间,反复从源文件读取1M内容写入到目标文件,直到读完. 1 private void CopyBigFile() 2 { 3 string originalPath = @"E:\AdvanceCSharpProject\LearnCSharp\21.zip"; 4 string destPath = @"F:\BaiduNetdiskDownload\21.zip"; 5 //定义读文件流 6 using (FileStream f

C#分块拷贝大文件

//定义源文件和目标文件,绝对路径 public static string source = @"E:\C#\C#编程语言详解.pdf"; //2014-6-10 Training //拷贝大文件,分块拷贝 AddBigFile(source); /// <summary> /// 拷贝大文件 /// </summary> /// <param name="source">原绝对路径</param> private

系统操作(mac)-文件太大无法拷贝到U盘

现在的网速是越来越快了,各种在线传输文件还是算比较快了,若遇到像7.8个GB的文件,还是U盘来得实在,但是很的多Mac用户在向U盘拷贝文件时总会遇到"文件太大,无法拷贝"的错误提示: U盘容量明明是够的啊.其实问题不是出在文件大小上面,而是U盘格式.目前大部分U盘出厂格式为FAT32,而这种格式是不支持存储4GB以上文件的,所以在拷贝一些高清电影.游戏等文件时会出现以上提示.如何解决这个问题呢,这还是很简单的,把 FAT32 格式转换为 ExFAT 即可,这里需要用到 MAC 系统中的

怎么处理U盘无法拷贝超过4G大文件的情况?

制作好雨后清风U盘启动盘后,有朋友在将雨后清风系统镜像文件拷贝传输至U盘时,会发现U盘提示文件过大,无法进行传输,但是U盘的剩余存储空间明显还足够,这是怎么回事呢?其实这是U盘文件系统格式的原因,如果你的U盘文件系统格式不是NTFS的话,即使剩余空间足够,也无法传输4G以上大小的单个文件.下面雨后清风就来告诉你相应的解决方法. U盘无法存储传输4G以上大文件的解决方法 1.插入U盘,打开我的电脑,右键点击U盘,单击选择"属性".在U盘属性的面板中切换到"硬件"选项卡