【愚公系列】2023年04月 .NET_C#知识点-拷贝文件的总结

举报
愚公搬代码 发表于 2023/04/30 23:31:46 2023/04/30
【摘要】 前言数据复制主要功能是将一组数据从一个数据源拷贝到一个或多个数据源,涵盖数据的监控、获取、传输、存储、校验等步骤。文件拷贝是指将一个文件从一个位置复制到另一个位置的过程。文件拷贝可以在同一台计算机上完成,也可以在不同的计算机之间完成。文件拷贝可以使用拷贝命令或拷贝软件完成,也可以使用拖放操作完成。文件拷贝也是数据复制的过程,不仅仅可以进行数据备份,而且还可以防止数据被占用的情况,使用不了文件...

前言

数据复制主要功能是将一组数据从一个数据源拷贝到一个或多个数据源,涵盖数据的监控、获取、传输、存储、校验等步骤。

文件拷贝是指将一个文件从一个位置复制到另一个位置的过程。文件拷贝可以在同一台计算机上完成,也可以在不同的计算机之间完成。文件拷贝可以使用拷贝命令或拷贝软件完成,也可以使用拖放操作完成。

文件拷贝也是数据复制的过程,不仅仅可以进行数据备份,而且还可以防止数据被占用的情况,使用不了文件。这时候的解决方案就是把另一个程序的文件拷贝到当前程序就可以了。

一、拷贝文件的总结

1.Copy

这个是C#比较常用的拷贝文件方法,是File下面的一个方法,这种适用于没有特殊要求的文件拷贝,使用方法如下:

using System.IO;
// 拷贝文件的总结
//-----------------------------------------COPY-----------------------------------------

string sourceFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\源文件.txt";
string tagretFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\复制文件.txt";
if (!Directory.Exists(@"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy"))//需要判断文件夹是否存在
Directory.CreateDirectory(@"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy");
// 如果等于true则覆盖目标目录文件,否则不覆盖
bool isrewrite = true;
System.IO.File.Copy(sourceFile, tagretFile, isrewrite);


2.CopyTo

CopyTo的作用会远高于Copy。CopyTo 方法可以返回一个 FileInfo 类型,表示复制操作后的新文件信息;而且CopyTo 支持不同的文件系统中复制文件;CopyTo 方法可以使用 FileOptions 枚举来指定操作行为,例如指定是否覆盖目标文件、是否允许在复制期间绕过缓存等等。

using System.IO;
// 拷贝文件的总结
//-----------------------------------------COPY-----------------------------------------

string sourceFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\源文件.txt";
string tagretFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\复制文件.txt";
FileInfo file = new FileInfo(sourceFile);
if (file.Exists) //可以判断源文件是否存在
{
// 这里是true的话覆盖
file.CopyTo(tagretFile, true);
}


3.文件流

文件流是一种从文件中读取或写入数据的流式传输方式。它可以让程序以一种有序的方式来处理文件中的数据,而不必一次性将文件中的所有数据都读取到内存中。文件流可以按照字节、字符或行的方式来读取文件中的数据,从而更加有效地处理文件中的数据。

using System.IO;
// 拷贝文件的总结
//-----------------------------------------COPY-----------------------------------------

string sourceFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\源文件.txt";
string tagretFile = @"E:\NetProjects\个人学习\ConsoleStudy\ConsoleStudy\复制文件.txt";
CopyFileUsingFileStream(sourceFile, tagretFile);


static void CopyFileUsingFileStream(string sourceFilePath, string destFilePath)
{
// 创建文件流并读取文件
using (FileStream sourceStream = new FileStream(sourceFilePath, FileMode.Open))
{
// 创建新文件流并写入
using (FileStream destStream = new FileStream(destFilePath, FileMode.Create))
{
// 创建一个缓冲区来存储读取的数据
byte[] buffer = new byte[1024];
// 读取数据写入到目标文件流
int bytesRead;
while ((bytesRead = sourceStream.Read(buffer, 0, buffer.Length)) > 0)
{
destStream.Write(buffer, 0, bytesRead);
}
}
}
}



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。