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

news2025/4/6 3:46:25

【.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.coloradmin.cn/o/1475741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-AndroidIT招聘数据开发岗-其它招聘岗位数据分析算法方面运维方面测试方面招聘岗…

C语言 变量

变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头…

Python入门到精通(九)——Python数据可视化

Python数据可视化 一、JSON数据格式 1、定义 2、python数据和JSON数据转换 二、pyecharts 三、折线图 四、地图 五、动态柱状图 一、JSON数据格式 1、定义 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据JSON本质上是一个带有特定格式的字符…

python|闲谈2048小游戏和数组的旋转及翻转和转置

目录 2048 生成数组 n阶方阵 方阵旋转 顺时针旋转 逆时针旋转 mxn矩阵 矩阵旋转 测试代码 测试结果 翻转和转置 2048 《2048》是一款比较流行​的数字游戏​,最早于2014年3月20日发行。原版2048由Gabriele Cirulli首先在GitHub上发布,后被移…

LeetCode142. 环形链表 II刷题详解

今天力扣刷到了一个特别有意思的题目,于是就写了下面的题解来加深以下理解。 142. 环形链表 II - 力扣(LeetCode) 这个可以分为两大步去写,首先要判断链表是否有环,然后如果有环就去找到环的入口,没有环返…

11 PLL IP核

PLL IP 核简介 锁相环(PLL)作为一种反馈控制电路,其特点是利用外部输入的参考信号来控制环路内部震荡信号的频率和相位。因为锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作…

一文读懂压敏电阻原理,参数,选型

大家好,我是砖一。 压敏电阻并不是一般的电阻,而是一种具有瞬态电压抑制功能的元件,效果同TVS。 这篇文章介绍压敏电阻的一些基本知识,包括参数、选型、应用等。 一,基础知识 压敏电阻用MY表示,MY后…

东方博宜 1078. 求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值

东方博宜 1078. 求恰好使s11/21/3…1/n的值大于X时n的值 #include<iostream> using namespace std; int main() {int x ;cin >> x ;double s 0 ;int i 1 ;bool m true ;while(m){s 1.0/i ;if(s>x)break;i ;}cout << i ;return 0 ; }

【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 1. 面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符…

SpringBoot案例(黑马学习笔记)

这个案例呢&#xff0c;就是Tlias智能学习辅助系统。 参考接口文档完成后端功能的开 发&#xff0c;然后结合前端工程进行联调测试即可。 完成后的成品效果展示&#xff1a; 准备工作 需求&环境搭建 需求说明 部门管理 部门管理功能开发包括&#xff1a; ● 查询部门列…

C++ 高频考点

1. C/C内存有哪几种类型&#xff1f; C中&#xff0c;内存分为5个区&#xff1a;堆(malloc)、栈(如局部变量、函数参数)、程序代码区&#xff08;存放二进制代码&#xff09;、全局/静态存储区&#xff08;全局变量、static变量&#xff09;和常量存储区&#xff08;常量&…

Linux如何磁盘分区2

gdisk GPT 128个分区 注意&#xff1a;转换格式时保证此分区没有被系统占用 parted -s /dev/sdc mklabel gpt #将/dev/sdc(MBR格式)转换成(GPT格式) parted -s /dev/sdc mklabel msdos #将/dev/sda(GPT格式)转换成(MBR格式) 1.创建分区 yum -y install gdisk #安装分…

Postman越来越难用了

今天看到有个哥们吐槽postman的新版界面&#xff0c;这位是Spotify的资深工程师&#xff0c;所以他的槽点还是有些代表性&#xff0c;他是这么说的 Uhhhh what happened to Postman? I just want to send, and inspect http requests? What is all this shit? Adam Rackis S…

【黑马程序员】3、TypeScript常用类型_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 3、TypeScript常用类型 3.1 类型注解 …

SD-WAN技术:优化国内外服务器访问的关键

在全球化的商业环境中&#xff0c;企业经常需要在国内访问国外的服务器。然而&#xff0c;由于地理位置和网络架构的限制&#xff0c;这种跨国访问往往会遇到速度慢、延迟高等问题。SD-WAN&#xff08;软件定义广域网&#xff09;技术的兴起&#xff0c;为企业提供了一种新的解…

kotlin与java的相互转换

Kotlin转java 将kotlin代码反编译成java Tools -> Kotlin -> Show Kotlin Bytecode 然后点击 【Decompile】 生成java代码 java转kotlin Code -> Convert Java File To Kotlin File

代码随想录算法训练营第二十七天| 39. 组合总和、40.组合总和II、131.分割回文串

文章目录 1.组合总和2.组合总和II3.分割回文串 1.组合总和 参数和返回值&#xff1a; vector<vector<int>> result; vector<int> path; int sum; void backtracking(vector<int>& candidates, int target, int index)终止条件&#xff1a;大于等于…

小白水平理解面试经典题目leetcode. 606 Construct String from Binary Tree【递归算法】

Leetcode 606. 从二叉树构造字符串 题目描述 例子 小白做题 坐在自习室正在准备刷题的小白看到这道题&#xff0c;想想自己那可是没少和白月光做题呢&#xff0c;也不知道小美刷题刷到哪里了&#xff0c;这题怎么还没来问我&#xff0c;难道是王谦谦去做题了&#xff1f; 这…

MES系统实施的几大关键步骤

在制造业中&#xff0c;MES管理系统成为了提升生产效率、优化资源配置和确保产品质量的关键工具。然而&#xff0c;由于MES管理系统的复杂性&#xff0c;成功实施并发挥其最大效益需要一系列精心策划的步骤。本文将详细介绍MES管理系统成功实施的几大关键步骤&#xff0c;以帮助…

腾讯云服务器4核8G性能,和阿里云比怎么样?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…