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

扫描二维码关注公众号,回复: 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) + "文件,删除失败.");
}

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

猜你喜欢

转载自blog.csdn.net/qq_46051312/article/details/123418465