要高效读取大型文本文件,应避免使用file.readalltext,改用file.readlines或streamreader逐行读取。1. 使用file.readlines:foreach (string line in file.readlines("largefile.txt")) { 处理每一行; },它返回ienumerable<string>,支持延迟执行;2. 使用streamreader:using (streamreader reader = new streamreader("largefile.txt")) { while ((line = reader.readline()) != null) { 处理每一行; } },可更精细控制编码和读取过程。两种方法均能有效降低内存占用,防止内存溢出。

C#的File类提供了多种静态方法,用于执行各种文件操作,从简单的读取和写入到更复杂的文件属性管理。它就像一个瑞士军刀,虽然功能强大,但也需要了解每种工具的用途,才能避免用错地方。
File类提供了创建、删除、复制、移动文件,以及读取和写入文件内容的方法。它还允许你获取和设置文件的属性,例如创建时间、最后访问时间等。
创建、删除、复制、移动、读写文件内容、获取和设置文件属性。
直接用
File.ReadAllText
File.ReadLines
StreamReader
例如,使用
File.ReadLines
foreach (string line in File.ReadLines("largefile.txt"))
{
// 处理每一行数据
Console.WriteLine(line);
}或者使用
StreamReader
using (StreamReader reader = new StreamReader("largefile.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// 处理每一行数据
Console.WriteLine(line);
}
}File.ReadLines
IEnumerable<string>
StreamReader
写入文件时,一个常见的错误是忘记处理异常,或者没有正确关闭文件流。如果在写入过程中发生错误,可能会导致数据丢失或者文件损坏。
为了避免这种情况,应该使用
try-catch-finally
finally
using
例如:
try
{
using (StreamWriter writer = new StreamWriter("output.txt"))
{
writer.WriteLine("Hello, world!");
// 更多写入操作
}
}
catch (Exception ex)
{
Console.WriteLine($"写入文件时发生错误:{ex.Message}");
}using
StreamWriter
try
此外,还可以考虑使用
File.AppendAllText
在进行文件操作之前,最好先判断文件是否存在,避免出现
FileNotFoundException
File.Exists
例如:
if (File.Exists("myfile.txt"))
{
// 文件存在,执行相应的操作
Console.WriteLine("文件存在!");
try
{
string content = File.ReadAllText("myfile.txt");
Console.WriteLine(content);
}
catch (Exception ex)
{
Console.WriteLine($"读取文件时发生错误:{ex.Message}");
}
}
else
{
// 文件不存在,进行相应的处理
Console.WriteLine("文件不存在!");
try
{
File.Create("myfile.txt").Close(); // 创建一个空文件,必须close,否则可能被占用
Console.WriteLine("已创建文件。");
}
catch (Exception ex)
{
Console.WriteLine($"创建文件时发生错误:{ex.Message}");
}
}注意,即使文件存在,也可能因为权限问题导致无法读取或写入。因此,最好在进行文件操作时,始终使用
try-catch
File.Create
Close()
File类提供了
GetCreationTime
GetLastAccessTime
GetLastWriteTime
例如:
if (File.Exists("myfile.txt"))
{
DateTime creationTime = File.GetCreationTime("myfile.txt");
DateTime lastAccessTime = File.GetLastAccessTime("myfile.txt");
DateTime lastWriteTime = File.GetLastWriteTime("myfile.txt");
Console.WriteLine($"创建时间:{creationTime}");
Console.WriteLine($"最后访问时间:{lastAccessTime}");
Console.WriteLine($"最后写入时间:{lastWriteTime}");
}
else
{
Console.WriteLine("文件不存在!");
}这些方法返回的是
DateTime
此外,还可以使用
FileInfo
FileInfo
FileInfo
FileInfo
FileInfo fileInfo = new FileInfo("myfile.txt");
if (fileInfo.Exists)
{
long fileSize = fileInfo.Length;
bool isReadOnly = fileInfo.IsReadOnly;
Console.WriteLine($"文件大小:{fileSize} 字节");
Console.WriteLine($"是否只读:{isReadOnly}");
}
else
{
Console.WriteLine("文件不存在!");
}
FileInfo
File
FileInfo
File
FileInfo
以上就是C#的File类提供了哪些文件操作方法?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号