文件操作是开发中基本的也是常用的功能需求,File类提供了文件创建、读取、写入、移动、复制、删除等一系列基本方法,我们可以直接使用。这篇文章记录下使用 File和FileStream 2个类进行基本文件操作。
创建目录:使用Directory静态类创建目录,需要重用目录对象是可以使用DirectoryInfo实例类型。
Directory.CreateDirectory(item);
处理文件目录等操作时请使用Path类辅助完成。尽量避免人为导致的错误。
Path.Combine(path1, "a.txt");
创建文件:使用File静态类创建文件(注意释放资源,关闭流),同样可以使用FileInfo实例类型。
//创建文件
FileStream fileStream = File.Create(file1, 1024, FileOptions.None);
//创建完文件后关闭流
fileStream.Close();
向文件写入或追加内容:
//向指定文件追加内容,如果不存在则创建
await File.AppendAllLinesAsync(file1, new List<string> { "dddd", "eeee", "ffff" });
File.AppendAllLines(file1, new List<string> { "dddd", "eeee", "ffff" });
文件拷贝、移动、删除方法:
//将文件复制到指定位置并指定文件名
File.Copy(file1, file4);
//将文件复制到指定位置并指定文件名,如果文件存在则覆盖
File.Copy(file2, file5, true);
//将文件移动到指定位置
File.Move(file3, file6);
//将复制成功后的源文件删除
File.Delete(file1);
File.Delete(file2);
完整示例代码:
class FileDemo
{
public static async Task DemoMain()
{
string path1 = @"E:\Test\1";
string path2 = @"E:\Test\2";
string file1 = Path.Combine(path1, "a.txt");
string file2 = Path.Combine(path1, "b.txt");
string file3 = Path.Combine(path1, "c.txt");
string file4 = Path.Combine(path2, "d.txt");
string file5 = Path.Combine(path2, "e.txt");
string file6 = Path.Combine(path2, "f.txt");
//如果目录不存在就创建目录
IsCreateDir(path1, path2);
//创建文件
FileStream fileStream = File.Create(file1, 1024, FileOptions.None);
//创建完文件后关闭流
fileStream.Close();
//创建并写入文件
await File.WriteAllLinesAsync(file2, new List<string> { "aaaa", "bbbb", "cccc" });
//向指定文件追加内容,如果不存在则创建
await File.AppendAllLinesAsync(file1, new List<string> { "dddd", "eeee", "ffff" });
//向指定文件追加字符串,如果不存在则创建
await File.AppendAllTextAsync(file2, "gggg");
//创建并写入文件
await File.WriteAllBytesAsync(file3, Encoding.Default.GetBytes("hhhh"));
//将文件复制到指定位置并指定文件名
File.Copy(file1, file4);
//将文件复制到指定位置并指定文件名,如果文件存在则覆盖
File.Copy(file2, file5, true);
//将文件移动到指定位置
File.Move(file3, file6);
//将复制成功后的源文件删除
File.Delete(file1);
File.Delete(file2);
//读取文件中的内容
string str1 = await File.ReadAllTextAsync(file4);
string[] strs = await File.ReadAllLinesAsync(file5);
string str2 = await File.ReadAllBytesAsync(file6)
.ContinueWith(t =>
{
t.Wait();
string result = Encoding.Default.GetString(t.Result);
return result;
});
Console.WriteLine($"file1内容读取-{str1}");
Console.WriteLine($"file2内容读取-{string.Join(' ', strs)}");
Console.WriteLine($"file3内容读取-{str2}");
}
/// <summary>
/// 创建目录
/// </summary>
/// <param name="paths"></param>
static void IsCreateDir(params string[] paths)
{
foreach (var item in paths)
{
//判断目录不存在则创建目录
if (!Directory.Exists(item))
Directory.CreateDirectory(item);
}
}
}
输出结果:

IO类型的操作能使用异步方法的尽量使用异步方法,有助于提高应用程序资源使用率。
本文详细介绍了如何使用Java的File和FileStream进行文件创建、读写、复制、移动和删除,包括异步操作和路径处理技巧。涵盖了创建目录、文件操作示例和资源管理等内容。

1888

被折叠的 条评论
为什么被折叠?



