C# IO读取
- File 类 - 提供用于创建,复制,删除,移动 和 打开单一文件的静态方法
- Path 类 - 对包含文件或目录路径信息的 String 实例执行操作
- Directory 类 - 公开用于通过目录和子目录进行创建,移动 和 枚举 的静态方法
- Steam - 提供字节序列的一般视图。
File
File.Exists(string path)
:判断路径是否存在
File.Create(string path)
:创建文件或覆盖文件,返回 FileSteam
File.CreateText(string path)
:创建文件或覆盖文件,返回SteamWriter
File.Delete(string path)
:删除文件
File.Copy(string sourceFileName, string destFileName)
: 复制文件到新的位置
File.Move(string sourceFileName, string destFileName)
:移动文件到新的位置
File.AppendText(string path)
:没有文件创建文件,返回 SteamWrite
File.AppendTextAll(string path, string contents)
:没有文件创建文件,追加文本。
File.AppendTextAllLines(string path, IEnumerable<string> contents)
:没有文件创建文件,追加多行
File.OpenText (string path)
:没有文件创建文件,返回 SteamReader
File.ReadAllText(string path)
:读入全部
File.ReadAllLines(string path)
:分开读入多行字符串
File.OpenWrite(string path)
:没有文件创建文件,返回 SteamWrite
File.WriteAllText(string path, string contents)
:没有文件创建文件,写入文本
File.WriteAllLines(string path, IEnumerable<string> contents)
:没有文件创建文件,写入多行
FileMode
文件打开方式(枚举)
- Create - 创建新文件,如果此文件已存在,则会将其覆盖。
- Create New - 创建新文件。如果此文件已存在,则会触发异常。
- Append - 存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。
- Open - 打开现有文件。文件不存在,引发异常。
- Open Or Create - 打开文件(如果文件存在);否则,应创建新文件。
FileAccess
文件访问权限(枚举)
- Read - 对文件的读访问。 可从文件中读取数据。 与
Write
组合以进行读写访问。 - Write - 对文件的读写访问权限。 可从文件读取数据和将数据写入文件。
- Read Write - 文件的写访问。 可将数据写入文件。 与
Read
组合以进行读写访问。
Path
Path.Combine
:连接两个路径,以\
符号隔开
Path.GetDirectory(string path)
:获得目录路径
Path.GetFile(string path)
:获得文件名
Path.GetExtension(string path)
:获得后缀名
Path.ChangeExtension(string path, string extension)
:改变后缀名
Path.GetFullPath(string path)
:获得文件的绝对路径
Path.GetFileWithoutExtension(string path)
:获得不具有扩展名的指定路径字符串的文件名。
Directory
Directory.CreateDirectory(string path)
: 创建目录及其子目录
Directory.Exists(string path)
:判断路径是否存在
Directory.Delete(string path)
:删除目录及其子目录
Directory.Move (string sourceDirName, string destDirName)
:将文件或目录及其内容移动到新位置
Directory.GetDirectorys(string path)
:返回与在指定目录中的指定搜索模式匹配的子目录的名称(包括其路径),还可以选择地搜索子目录。
Directory.GetFiles(string path)
:返回指定目录中文件的名称(包括其路径)。
//查找子目录与文件路径
private static void GetChildDirectoriesAndFiles(string path, List<string> dictList)
{
var dict = new DirectoryInfo(path);
var files = dict.GetFiles();
dictList.AddRange(files.Select(f => f.FullName));
foreach (var directory in dict.GetDirectories())
{
dictList.Add(directory.FullName);
GetChildDirectoriesAndFiles(directory.FullName, dictList);
}
}
Steam - 一个抽象类,所有流的抽象基类
SteamReader
和 StreamWrite
类帮助我们实现在流上读写字符串功能
提供以下三种常见子类 Steam
:
MemorySteam
- 存储在内存中的字节流FileSteam
- 存储在文件系统的字节流BufferedSteam
- 为其他流提供缓冲的流
TextReader
- 为抽象类,派生为 SteamReader
和 StringReader
两个类
-
ReadLine()
:读一行,返回string -
ReadToEnd()
:读全部,返回string -
Close() 和 Dispose()
: 回收资源,由于这些是非托管资源,需要手动回收,可以使用 using 关键字来保证回收
TextWriter
- 为抽象类,派生为 SteamWriter
和 StringWrite
两个类
-
Write(string s)
:写入字符串(数字等) -
WriteLine(string s)
:写入一行字符串,后面会补一个回车 -
Close() 和 Dispose()
: 回收资源,由于这些是非托管资源,需要手动回收,可以使用 using 关键字来保证回收
例如
public static class Program
{
public static void Main()
{
var path = @"D:\";
path = Path.Combine(path, "Text");
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
path = Path.Combine(path, "text.txt");
if (!File.Exists(path)) File.Create(path);
//写入操作
using (TextWriter writer = new StreamWriter(path))
{
writer.WriteLine("wu xin");
writer.WriteLine("No1");
}
//读入操作
using (TextReader reader = new StreamReader(path))
{
string? s = reader.ReadLine();
while (s != null)
{
Console.WriteLine(s);
s = reader.ReadLine();
}
// Console.WriteLine(reader.ReadToEnd());
}
}
}
还有一些之后补充