C# File类处理文件的常用方法

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 文件的情况下:

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) + "文件,删除失败.");
}

因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值