c#文件操作

1文件的读取和写入


1.1读取文件

方法 说明
​File.ReadAllText(FilePath);​ 读取指定路径的文件
​File.ReadAllText(FilePath, Encoding);​ 通过指定编码格式来读取指定文件
​File.ReadAllBytes();​ 读取二进制文件,并把内容读取到一个字节数组
​File.ReadAllLines();​ 以行的形式读取文件,一行一个字符串,返回一个字符串的数组

1.2写入文件

方法 描述
​File.WriteAllText();​ 以字符串方式写入
​File.WriteAllLines();​ 以字符串数组凡是写入
​File.WriteAllBytes();​ 以字节数组方式写入

2.文本读取和写入流


2.1文本流的创建

2.1.1直接创建

csharp 复制代码
StreamReader reader = new StreamReader(@"E:\file.zip");

2.1.2通过 FileStream 创建

csharp 复制代码
FileStream fs = new FileStream(@"E:\file.zip");
StreamReader reader = new StreamReader(fs);

2.1.3通过 FileInfo 创建

csharp 复制代码
FileInfo myFile = new FileInfo(@"E:\file.zip");
myFile.OpenText();

2.2文本流的使用

csharp 复制代码
StreamReader reader = new StreamReader(@"E:\file.zip");
string line = null;
while ((line = reader.ReadLine()) != null)
{
    Console.WriteLine(line);
}
reader.Close();
csharp 复制代码
reader.ReadToEnd(); // 读取单个字符
reader.ReadLine(); // 读取一行

char[] buffer = new char[1024];
reader.Read(buffer, 0, 1024); // 读取指定字符
csharp 复制代码
StreamReader reader = new StreamReader(@"E:\file.txt");
StreamWriter writer = new StreamWriter(@"E:\fileCopy.txt");
string line = null;
while ((line = reader.ReadLine()) != null)
{
    writer.WriteLine(line);
}
writer.Close();
reader.Close();

FileMode,FileAccess 的参数释义


首先,FileMode,FileAccess都是枚举类型。

3.FileMode,指定操作系统打开文件的方式

1)FileMode.CreateNew:

用法:创建新的文件,如果文件已存在,则会抛出异常。

2)FileMode.Create:

用法:创建新的文件,如果文件已存在,则覆盖;如果文件不存在,则创建新的。

3)FileMode.Open:

用法:打开文件,如果文件不存在,则会抛出异常。

4)FileMode.OpenOrCreate:

用法:打开或者新建文件夹,如果文件存在,则打开文件,把指针指到文件的开始;如果文件不存在,则新建文件。

5)FileMode.Truncate:

用法:如果文件存在,则打开文件,清除这个文件中的内容,把指针指到文件的开始,保留最初文件的创建日期(重写);如果文件不存在,则抛出异常。

6)FileMode.Append:

用法:追加,如果文件存在,则打开文件,把指针指到文件的末尾;如果文件不存在,则新建文件。

4.FileAccess,访问权限(只读,只写,可读可写)

1)FileAccess.Read:

用法:获得对文件的读取访问权限,进而可以从文件中读取数据(只读)。

2)FileAccess.Write:

用法:获得对文件的写入访问权限,进而可以将数据写入该文件(只写)。

3)FileAccess.ReadWrite:

用法:获得读取,写入文件的访问权限, 进而可以从文件中读取,写入数据(可读可写)。

5.FileInfo 和 DirectoryInfo


  • 通过 FileInfo​ 和 DirectoryInfo​ 类来读取文件和文件夹属性

    • 查看文件属性,创建文件,移动文件,重命名文件
    • 判断路径是否存在,创建目录
  • 通过 File​ 读写文件

  • 使用流来读写文件

    • FileStream
    • StreamReader(读取流------读取数据)和 StreamWriter(写入流------写入数据)

5.1 FileInfo 和 DirectoryInfo

csharp 复制代码
FileInfo myFile = new FileInfo(@"E:\TextFile.txt");
// 复制文件
myFile.CopyTo(@"E:\TextFile2.txt");
File.Copy(@"E:\TextFile.txt", @"E:\TextFile2.txt");
csharp 复制代码
DirectoryInfo myFolder = new DirectoryInfo(@"E:\test\");
myFolder.Creat(); // 创建文件夹
myFolder.Exists // 属性,判断文件夹是否存在
Directory.Exists() // 判断文件夹是否存在
Directory.CreateDirectory() // 创建文件夹

5.2FileInfo 和 DirectoryInfo 属性列表

属性 说明
​CreateTime​ 创建文件或文件夹的时间
​DirectoryName​(用于 FileInfo) 包含文件夹的完整路径
​Parent​(用于DirectoryInfo) 指定子目录的父目录
​Exists​ 文件或文件夹是否存在
​Extension​ 文件的扩展名 对于文件夹,返回空白
​FullName​ 文件或文件夹的完整路径名
​LastAccessTime​ 最后一次访问文件或文件夹的时间
​LastWriteTime​ 最后一次修改文件或文件夹的时间
​Name​ 文件或文件夹名称
​Root​(仅用于 DirectoryInfo) 根路径
​Length​(仅用于 FileInfo) 返回文件的大小(以字节为单位)

5.3FileInfo 和 DirectoryInfo 的方法列表

方法 描述
​Create()​ 创建给定名称的文件夹或者空文件,对于 FileInfo ,该方法会返回一个流对象,以便于写入文件
​Delete()​ 删除文件或文件夹。对于文件夹有一个可以递归的 Delete​ 选项
​MoveTo()​ 移动或重命名文件或文件夹
​CopyTo()​ (只适用于 FileInfo)复制文件,文件夹没有复制方法。如果想要复制完整的目录树,需要单独复制每个文件和文件夹
​GetDirectories()​ (只适用于 DirectoryInfo)返回 DirectoryInfo 对象数组,该数组表示文件夹中包含的所有文件夹
​GetFiles()​ (只适用于 DIrectoryInfo)返回 FileInfo 对象数组,该数组表示文件夹中所有的文件
​GetFileSystemInfos()​ (只适用于 DIrectoryInfo)返回 FileInfo 和 DirectoryInfo 对象,它把文件夹中包含的所有对象表示为一个 FileSystemInfo 引用数组

‍

相关推荐
叼烟扛炮14 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
Android系统攻城狮21 小时前
Linux FFmpeg深度解析之avcodec_align_dimensions调用流程与实战(二十九)
服务器·linux音视频·音视频进阶·ffmpeg音视频
金銀銅鐵21 小时前
为什么枚举类中可以定义抽象方法
java·后端·ai编程
叼烟扛炮1 天前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery1 天前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
文丑颜不良啊1 天前
LeetCode1941~1960题目解析
java·leetcode
测试界的小码农1 天前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
txxzjmzlh1 天前
SpringBoot 统⼀功能处理
java·spring boot·后端
zhikouai1 天前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
荣合技术服务1 天前
HPC 超算集群故障维修实录:找荣合科算维护后,模拟仿真计算又能跑了
运维·服务器·超算服务器·荣合科算