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 引用数组 |