C# File类处理文件的常用方法
使用File类对文件进行处理时,通常少不了对文件路径的处理。在这里,先介绍Path类的常用方法,接着再介绍File类的常用方法。
Path 类常用方法
方法 | 说明 |
---|---|
GetFileName | 获取文件名(包含扩展名) |
GetFileNameWithoutExtension | 获取文件名(不包含扩展名) |
GetExtension | 获取文件扩展名 |
GetDirectoryName | 获取文件所在的文件目录 |
GetFullPath | 获取文件所在的全路径 |
Combine | 连接字符串作为路径 |
string path = @"C:\Users\Administrator\Desktop\text.txt";
//获取文件名(包含扩展名)
Console.WriteLine(Path.GetFileName(path));//输出:text.txt
//获取文件名(不包含扩展名)
Console.WriteLine(Path.GetFileNameWithoutExtension(path));//输出:text
//获取文件扩展名
Console.WriteLine(Path.GetExtension(path));//输出:.txt
//获取文件所在的文件目录
Console.WriteLine(Path.GetDirectoryName(path));//输出:C:\Users\Administrator\Desktop
//获取文件所在的全路径
Console.WriteLine(Path.GetFullPath(path));//输出:C:\Users\Administrator\Desktop\text.txt
//连接字符串作为路径
Console.WriteLine(Path.Combine(@"C:\Users", "text.txt"));//输出:C:\Users\text.txt
Console.ReadKey();
注意:【@】符号的作用是屏蔽【\】符号所起的转义作用
File 类的常用方法
方法 | 说明 |
---|---|
Exists | 确定指定的文件是否存在 |
Create | 在指定路径中创建文件 |
WriteAllBytes | 以字节形式写入 |
WriteAllLines | 以字符串形式写入每一行 |
WriteAllText | 以字符串形式写入 |
AppendAllText | 以字符串形式追加到文本文件 |
ReadAllBytes | 以字节形式读取 |
ReadAllLines | 以字符串形式读取每一行 |
ReadAllText | 以字符串形式读取文本文件 |
Copy | 将现有文件复制到新文件 |
Move | 将指定文件移到新位置,并提供指定新文件名的选项 |
Delete | 删除指定的文件,如果指定文件不存在,则不引起异常 |
Exists
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path1 = @"C:\Users\Administrator\Desktop\a.txt";
string path2 = @"C:\Users\Administrator\Desktop\b.txt";
string str1 = File.Exists(path1) ? "存在" : "不存在";
string str2 = File.Exists(path2) ? "存在" : "不存在";
Console.WriteLine("path1文件" + str1);//输出:存在
Console.WriteLine("path2文件" + str2);//输出:不存在
Console.ReadKey();
Create
string path = @"C:\Users\Administrator\Desktop\a.txt";
if (File.Exists(path))
{
Console.Write("文件已经存在!!!\n1.覆盖文件\t2.取消创建\n请选择:");
string temp = Console.ReadLine();
if(temp == "1")
{
File.Create(path);
Console.WriteLine("覆盖创建" + Path.GetFileName(path) + "成功.");
}
else
{
Console.WriteLine("用户取消创建.");
}
}
else
{
File.Create(path);
Console.WriteLine("创建" + Path.GetFileName(path) + "成功.");
}
Console.ReadKey();
当 a.txt 文件不存在时,文件被创建;
当 a.txt 文件存在时,询问用户是否覆盖创建文件。
注意:当文件存在时,创建会覆盖原本的文件。
WriteAllBytes
string str = "这是要输入的内容文本";
string path = @"C:\Users\Administrator\Desktop\a.txt";
//表示以 Default (默认格式:ANSI)的类型赋值给字节数组变量
byte[] buffer = Encoding.Default.GetBytes(str);
File.WriteAllBytes(path, buffer);
Console.WriteLine("写入成功.");//输出
Console.ReadKey();
打开 a.txt 文件:
当 a.txt 文件不存在时,会先创建文件,并写入文本内容;
当 a.txt 文件存在时,覆盖原本文件内容。
WriteAllLines
string path = @"C:\Users\Administrator\Desktop\a.txt";
string[] strs = new string[] {
"张三", "李四", "王五" };
File.WriteAllLines(path, strs, Encoding.UTF8);
Console.WriteLine("写入成功.");//输出
Console.ReadKey();
打开 a.txt 文件:
当 a.txt 文件不存在时,会先创建文件,并写入文本内容;
当 a.txt 文件存在时,覆盖原本文件内容。
WriteAllText
string path = @"C:\Users\Administrator\Desktop\a.txt";
string str = "这是写入的内容";
File.WriteAllText(path, str);
Console.WriteLine("写入成功.");//输出
Console.ReadKey();
打开 a.txt文件:
当 a.txt 文件不存在时,会先创建文件,并写入文本内容;
当 a.txt 文件存在时,覆盖原本文件内容。
AppendAllText
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
string str = "从这里开始是追加内容";
File.AppendAllText(path, str);
Console.WriteLine("追加成功.");//输出
打开 a.txt文件:
当 a.txt 文件不存在时,会先创建文件,并写入追加的文本内容;
当 a.txt 文件存在时,追加写入内容。
ReadAllBytes
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
byte[] buffer = File.ReadAllBytes(path);
string str = Encoding.Default.GetString(buffer);
//Encoding.GetEncoding("GB2312").GetString(buffer);
//默认为ANSI编码格式文件,可以对其他编码格式文件进行获取
Console.WriteLine("以下是a.txt文件文本内容:");//输出
Console.WriteLine(str);//输出整个文本文件内容
Console.ReadKey();
注意:文件的编码格式。默认编码格式为ANSI。
ReadAllLines
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
string[] contents = File.ReadAllLines(path, Encoding.Default);
Console.WriteLine("以下是a.txt文件文本内容:");
foreach (string item in contents)
{
Console.WriteLine(item);//输出每一行的文本文件内容
}
Console.ReadKey();
ReadAllText
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
扫描二维码关注公众号,回复:
14878348 查看本文章
string path = @"C:\Users\Administrator\Desktop\a.txt";
Console.WriteLine("以下是a.txt文件文本内容:");
string str = File.ReadAllText(path, Encoding.Default);
Console.WriteLine(str);//输出整个文本文件内容
Console.ReadKey();
Copy
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
string copyToPath = @"C:\Users\Administrator\Desktop\b.txt";
if(File.Exists(path))
{
if(File.Exists(copyToPath))
{
Console.Write("复制目标文件已存在\n1.覆盖文件\t2.取消复制\n请选择:");
string temp = Console.ReadLine();
if(temp == "1")
{
File.Copy(path, copyToPath, true);//允许覆盖原文件
Console.WriteLine("复制成功");
}
else
{
Console.WriteLine("用户取消复制文件");
}
}
else
{
File.Copy(path, copyToPath);
Console.WriteLine("复制成功");//输出
}
}
else
{
Console.WriteLine(Path.GetFileName(path) + "文件不存在");
}
Console.ReadKey();
当 b.txt 文件不存在时,文件被复制;
当 b.txt 文件存在时,询问用户是否覆盖复制文件。
注意:当新文件存在时,可以使用 File.Copy() 第三个参数,覆盖同名文件。
Move
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
string moveToPath = @"C:\Users\Administrator\Desktop\b.txt";
if(File.Exists(path))
{
if(File.Exists(moveToPath))
{
Console.WriteLine("文件已经存在,无法移动.");
}
else
{
File.Move(path, moveToPath);
Console.WriteLine("移动成功.");//输出
}
}
else
{
Console.WriteLine(Path.GetFileName(path) + "文件不存在");
}
Console.ReadKey();
注意:当移动位置存在同名同类型文件时,无法移动。
Delete
在路径 C:\Users\Administrator\Desktop 已经存在 a.txt 文件的情况下:
string path = @"C:\Users\Administrator\Desktop\a.txt";
if(File.Exists(path))
{
File.Delete(path);
Console.WriteLine("删除成功.");//输出
}
else
{
Console.WriteLine("未找到" + Path.GetFileName(path) + "文件,删除失败.");
}
因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。