静态File类的常见的重要用法。
追加文字行
使用AppendAllLines()方法将多行文本添加到指定文件。
完整示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileUseApend
{
internal class Program
{
static void Main(string[] args)
{
string dummyLines =
"第一行." + Environment.NewLine +
"第二行." + Environment.NewLine +
"第三行." + Environment.NewLine +
"FOUR." + Environment.NewLine ;
//打开test.txt并追加行。如果文件不存在,则创建并打开。
File.AppendAllLines(@".\test.txt", dummyLines.Split(Environment.NewLine.ToCharArray()).ToList<string>());//这里可以写相对路径也可以是绝对路径
}
}
}
追加字符串
使用 File.AppendAllText ()方法将字符串追加到单行代码的文件中。
如果文件有内容的话,会在文本的后面进行添加(追加)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileUseApendT
{
internal class Program
{
static void Main(string[] args)
{
//test.txt并附加文本。如果文件不存在,则创建并打开。
//当前程序执行文件夹Debug/目录下并无test.txt文件。
File.AppendAllText(@"./test.txt", "测试用文字");
Console.WriteLine("如果文件不存在,则创建并打开");
}
}
}
//将字符串附加到文件
覆盖文本
使用File.WriteAllText()方法将文本写入文件。请注意,它不会追加文本,但覆盖现有的文本。
和追加还是有区别的:
覆盖文本是在当前文本下无论文件里面有没有内容执行过程就是先把原有的文件内容删除掉然后在重新写上要写的内容。
追加则是如果文件内有内容则会从内容的后面添加,如果没有当然还是会从第一行开始添加。
完整示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileUseApendF
{
internal class Program
{
static void Main(string[] args)
{
//下面检查两个过程的区别。
//testAppend.txt并附加文本。如果文件不存在,则创建并打开。
File.AppendAllText(@"./test.txt", "测试用文字,追加");
Console.WriteLine("文件追加");
//打开test.txt并编写文本。如果文件不存在,则创建并打开。
File.WriteAllText(@"./test1.txt", "测试用文字,覆盖");
Console.WriteLine("文件覆盖");
}
}
}
多个文件操作
前提是执行文件夹内(默认在Debug目录下)要有test.txt文件。
完整示例代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FileUseMore
{
internal class Program
{
static void Main(string[] args)
{
//检查文件在特定位置是否存在
bool isFileExists1 = File.Exists(@"./test.txt"); // 返回真
bool isFileExists2 = File.Exists(@"./t.txt"); // 返回假
Console.WriteLine(isFileExists1);
Console.WriteLine(isFileExists2);
//将test.txt复制为新文件Newtest.txt
File.Copy(@"./test.txt", @"Newtest.txt");
bool isFileExists3 = File.Exists(@"./Newtest.txt"); // 返回假
if (isFileExists3 is true)
{
Console.WriteLine("复制完成");
}
else
Console.WriteLine("复制失败");
//获取上次访问文件的时间
DateTime lastAccessTime = File.GetLastAccessTime(@"Newtest.txt");
Console.WriteLine(lastAccessTime);
//获取上次写入文件的时间
DateTime lastWriteTime = File.GetLastWriteTime(@"./test.txt");
Console.WriteLine(lastWriteTime);
//删除文件
File.Delete(@"./Newtest.txt");
bool isFileExists4 = File.Exists(@"./Newtest.txt"); // 返回假
if (isFileExists4 is false)
{
Console.WriteLine("删除完成");
}
else
Console.WriteLine("删除失败");
}
}
}
使用静态 File 类很容易处理物理文件。但是,如果您想要更多的灵活性,那么可以使用 FileInfo 类。同样,使用静态 Directory 类处理物理目录。
在重复一次要点
- File 是一个静态类,可以用较少的编码从物理文件读取\写入。
- 静态 File 类为物理文件提供了诸如创建,读取\写入,复制,移动,删除等功能。
- 静态 Directory 类以更少的编码为物理目录提供了诸如创建,复制,移动,删除等功能。
- FileInfo 和 DirectoryInfo 类提供与静态File和Directory类相同的功能。