【.NET Core】深入理解IO之File类

【.NET Core】深入理解IO之File类

文章目录

  • 【.NET Core】深入理解IO之File类
    • 一、概述
    • 二、File类
      • 2.1 File.AppendAllLines方法
      • 2.2 File.AppendAllText方法
      • 2.3 File.Copy 方法
      • 2.4 File.Create 方法
      • 2.5 File.Decrypt(String) 方法
      • 2.6 File.Delete(String) 方法
      • 2.7 File.Move 方法
      • 2.8 File.Open 方法

在这里插入图片描述

一、概述

C#中操作文件的最基本类就是IO类,里面就定义了很多衍生类和方法给我们对文件进行处理、转换、执行等操作;其中流分为写入流(输入流)和读取流(输出流),输出流用于对文件进行读取流操作,输入流用于对文件进行写入数据;
其中IO流中我们比较常用的类有BinaryReader(从二进制流读取原始数据), BinaryWriter(以二进制格式写入原始数据),BufferedStream(字节流的临时存储), Directory(有助于操作目录结构), DirectoryInfo(用于对目录执行操作),File(有助于处理文件),FileInfo(用于对文件执行操作), FileStream(用于文件中任何位置的读写)。

文章:【.Net Core】深入理解IO之文件和目录介绍了Directory使用,本文将介绍FileFileInfo的使用。

二、File类

File类提供了创建、复制、删除、移动和打开单一文件的静态方法,并协助创建FileStream对象。

File继承基类Object,使用File类执行典型操作,如复制、删除、移动、重命名、打开和追加到单个文件。还可以使用File类来获取和设置文件特性或DateTime与文件的创建、访问和写入相关的信息。如果要对多个文件进行操作,可以使用Directory.GetFilesDirectoryInfo.GetFiles

File许多方法在创建和打开文件时返回其I/O类型。可以使用这些进一步操作文件。

2.1 File.AppendAllLines方法

  • 重载
方法说明
AppendAllLines(String,IEnumerable)向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。
AppendAllLines(String,IEnumerable,Encoding)使用指定的编码向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。
  • 示例
var MarchMondays = from line in File.ReadLines(dataPath)where line.StartsWith("Monday") &&line.Contains("March")select line;
File.AppendAllLines(@"D:\temp\selectedDays.txt", MarchMondays);

2.2 File.AppendAllText方法

  • 重载
方法说明
AppendAllText(String,String)打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。
AppendAllText(String,String,Encoding)使用指定的编码将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
  • 示例
string path = @"d:\temp\MyTest.txt";
string appendText = "This is extra text" + Environment.NewLine;
File.AppendAllText(path, appendText)

2.3 File.Copy 方法

将现有文件复制到新文件。

  • 重载
方法说明
Copy(String,String,Boolean)将现有文件复制到新文件。 允许覆盖同名的文件,True覆盖
Copy(String,String)将现有文件复制到新文件。 不允许覆盖同名的文件。
  • 示例
string sourceDir = @"e:\current";
string backupDir = @"e:\goyeer\2024";string[] txtList = Directory.GetFiles(sourceDir, "*.txt");foreach (string f in txtList){string fName = f.Substring(sourceDir.Length + 1);File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));}
  • 注解

sourceFileNamedestFileName 参数可以指定相对或绝对路径信息。 相对路径信息解释为相对于当前工作目录。 此方法不支持参数中的通配符。

原始文件的属性保留在复制的文件中。

2.4 File.Create 方法

创建或截断并覆盖指定路径中的文件。

  • 重载
方法说明
Create(String)在指定路径中创建、截断和覆盖文件。
Create(String,Int32)在指定路径中创建、截断和覆盖文件,并指定缓冲区大小。
Create(String,Int32,FileOptions)创建或覆盖指定路径中的文件,指定缓冲区大小和一个描述如何创建或覆盖该文件的选项。
  • 示例
string path = @"c:\goyeer\MyTest.txt";
using (FileStream fs = File.Create(path))
{byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");fs.Write(info, 0, info.Length);
}
  • 注解

Createpath参数指定相对或绝对路径信息。相对路径信息解释为相对于当前工作目录。若要获取当前工作目录,使用GetCurrentDirectory。如果指定的文件不存在,则创建该文件;如果它确实存在并且它不是只读,则删除并覆盖内容。默认情况下,向所有用户授予对新文件的完整读/写访问权限。该文件读/写访问权限打开,并且必须先关闭,然后才能由另一个应用程序打开。

2.5 File.Decrypt(String) 方法

使用Encrypt(String)方法解密由当前账号加密的文件。

  • 示例
string FileName = "goyeer_config.cfg";
File.Encrypt(FileName);
Console.WriteLine("Encrypt " + FileName);
File.Decrypt(FileName);
Console.WriteLine("Decrypt " + FileName);
  • 注解

方法 Decrypt需要对正在解密的文件具有独占访问权限,如果另一个进程正在使用该文件,将引发异常。 如果文件未加密, Decrypt 将返回一个非零值,指示成功。

Encrypt方法和 Decrypt方法都使用安装在计算机上的加密服务提供程序 (CSP) ,以及调用方法的进程的文件加密密钥。

当前文件系统的格式必须为 NTFS,并且当前操作系统必须Windows NT或更高版本。

2.6 File.Delete(String) 方法

删除指定的文件

  • 示例
string sourceDir =$"e:/temp/goyeer";
string[] txtList = Directory.GetFiles(sourceDir, "*.txt");
foreach (string path in txtList)
{File.Delete(path);
}
  • 注解

指定一个文件名,其中包含参数的任何相对或绝对路径信息 path 。 不能包含通配符。 相对路径信息解释为相对于当前工作目录。如果要删除的文件不存在,则不会引发异常。

2.7 File.Move 方法

将指定文件移到新位置,提供要指定新文件名的选项。

  • 重载
方法说明
Move(String,String)将指定文件移到新位置,提供要指定新文件名的选项。
Move(String,String,Boolean)将指定文件移动到新位置,提供用于指定新文件名和替换目标文件(如果已存在)的选项。
  • 示例
string sourcePath = @"c:\temp\MyTest.txt";
string targetPath = @"c:\temp2\MyTest.txt";
File.Move(sourcePath,targetPath);

2.8 File.Open 方法

打开指定路径上的FileSteam

  • 重载
方法说明
Open(String,FileMode,FileAccess,FileShare)打开指定路径上的 FileStream,具有带读、写或读/写访问的指定模式和指定的共享选项。
Open(String,FileMode)通过不共享的读/写访问权限打开指定路径上的FileStream
Open(String,FileMode,FileStreamOptions)使用指定的路径、创建模式、读/写和共享权限、其他 FileStreams 对同一文件的访问权限、缓冲区大小、其他文件选项和分配大小初始化 类的新实例FileStream
Open(String,FileMode,FileAccess)通过指定的模式和不共享的访问权限打开指定路径上的FileStream
  • 示例
string path = @"c:\goyeer\MyTest.txt";
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
{byte[] b = new byte[1024];UTF8Encoding temp = new UTF8Encoding(true);while (fs.Read(b,0,b.Length) > 0){Console.WriteLine(temp.GetString(b));}   
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496123.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux shell:补充命令的使用

目录 一.导读 二.正文 三.结语 一.导读 上一篇介绍了脚本的简单概念以及使用,现在补充一些命令。 二.正文 目前处于全局目录,通过mkdir创建名我为day01的文件。 通过cd命令day01 切换至day01文件当中。 使用vim文本编辑器文件名(firstdir&…

爆火的1分钟声音克隆GPT-SoVITS项目 linux系统 ubuntu22.04安装2天踩坑教程

原项目地址:https://github.com/RVC-Boss/GPT-SoVITS 1分钟素材,最后出来的效果确实不错。 1. cuda环境安装 cuda环境准备 根据项目要求在cuda11.8和12.3都测试了通过。我这里是用cuda11.8 cuda11.8安装教程: ubuntu 22.04 cuda多版本和…

docker-mysql:5.7安装

1、下载mysql:5.7镜像 [rootlocalhost ~]# docker search mysql (某个XXX镜像名字) [rootlocalhost ~]# docker pull mysql:5.7 按装之前查看一下是否按装过mysql。如果安装过会占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、简单的安装 [rootlocalhost ~]# d…

【pytorch】函数记录

你好你好! 以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 torch.sum()torch.argmax()torch.nn.Parametertorch.unbindtorch.optim.Adam()[^adam]torch.cattorch.unsqueeze()torch.normalize()[^l2]torch.eyetorch.mmto…

亚信安慧AntDB:数据处理的好帮手

亚信安慧AntDB分布式数据库凭借平滑扩展、高可用性和低成本三大核心优势,在业界获得了极高的评价和认可。这些优点不仅为AntDB提供了巨大的市场发展潜力,也使其成为众多企业在数据管理上的首选解决方案。 AntDB的平滑扩展特性极大地提升了企业的灵活性和…

project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string, string

家人们,遇到了一个新的报错 于是从网上找了各种方法,有说把开发者工具关闭重启的,有说开发者工具下载重新下载的,有说开发者工具路径安装得在C盘的,均没有效果 解决方法: 1、运行项目,在开发者…

Netty权威指南——基础篇3(AIO编程)备份

1 概述 NIO 2.0 引入了新的异步通道概念,并提供了异步文件通道和异步套接字通道的实现。异步通道提供以下两种方式获取操作结果。 1、通过java.util.concurrent.Future类来表示异步操作的结果; 2、在执行异步操作的时候传入一个java.nio.channels Comple…

尚硅谷webpack5笔记2

Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…

主流开发环境都有哪些?主流开发语言都有什么?

目录 一、简介: 二、主流开发环境: 三、主流开发语言: 四、结论: 一、简介: 在现代软件开发领域,选择适合自己需求的开发环境和开发语言至关重要。本文将介绍目前主流的开发环境和开发语言,…

【推荐算法系列十六】:协同过滤

文章目录 参考原理基于邻域的协同过滤算法基于用户的协同过滤(User-Based Collaborative Filtering)基于内容的协同过滤 基于模型的协同过滤算法 扩展优缺点 参考 推荐系统之神经协同过滤 原理 基于邻域的协同过滤算法 基于邻域的协同过滤算法又包括…

多源视频融合平台VMS/smarteye,免费的GB28181 server, 免费的RTMP推流server,RTSP server

海康、大华、宇视等网络摄像机IPcamera及DVR/NVR等多路设备走国标28181接入视频混合融合平台smarteye 第三方国标摄像头走GB28181接入视频融合平台VMS/smarteye, 平台已为设备预分配了SIP帐号,这样免去了找平台人员索要接入SIP帐号的麻烦,可…

粗读[JACS]:多种铂单原子物种的可逆转化和分布测定

摘要:在单原子催化剂(SAC)中,支撑锚定位点的复杂性创造了具有不同配位环境的大量单原子物种。迄今为止,给定 SAC 中这些不同单原子物种的数量分布仍然难以捉摸。最近,CeO2负载的金属SAC通过多种合成策略调节…