C# 如何读取文件?
我试图让我的程序从一个.txt文件中读取代码,然后读回给我,但由于某种原因,在我编译时它会使程序崩溃。有人能告诉我我做错了什么吗?谢谢!:)C# 如何读取文件?,c#,.net,file-io,cmd,C#,.net,File Io,Cmd,我试图让我的程序从一个.txt文件中读取代码,然后读回给我,但由于某种原因,在我编译时它会使程序崩溃。有人能告诉我我做错了什么吗?谢谢!:) 为什么不使用System.IO.File.ReadAllLines(winDir+“\Name.txt”) 如果您只想在控制台中将其显示为输出,那么您可以非常简洁地执行此操作: private static string winDir = Environment.GetEnvironmentVariable("windir"); static void M
为什么不使用System.IO.File.ReadAllLines(winDir+“\Name.txt”) 如果您只想在控制台中将其显示为输出,那么您可以非常简洁地执行此操作:
private static string winDir = Environment.GetEnvironmentVariable("windir");
static void Main(string[] args)
{
Console.Write(File.ReadAllText(Path.Combine(winDir, "Name.txt")));
Console.Read();
}
如果文件与
.exe
位于同一文件夹中,则只需执行StreamReader=newstreamreader(“file.txt”)代码>
否则,在File.txt所在的位置,放置文件的完整路径。就我个人而言,我认为如果他们在同一个地方会更容易
从这里开始,它就像Console.WriteLine(reader.ReadLine())一样简单代码>
如果要同时读取所有行并显示所有行,可以执行for循环:
for (int i = 0; i < lineAmount; i++)
{
Console.WriteLine(reader.ReadLine());
}
for(int i=0;i
如果希望结果是字符串而不是数组,请使用下面的代码
File.ReadAllText(Path.Combine(winDir, "Name.txt"));
我不喜欢您的解决方案,原因很简单:
1) 我不想把他们都抓起来(试着抓)。为了避免这种情况,请使用System.IO.file.exist(“YourPath”)
2) 使用此代码,您没有处理streamreader。为了避免这种情况,最好像这样使用using构造函数:using(StreamReader sr=newstreamreader(path)){//Your code}
用法示例:
string path="filePath";
if (System.IO.File.Exists(path))
using (System.IO.StreamReader sr = new System.IO.StreamReader(path))
{
while (sr.Peek() > -1)
Console.WriteLine(sr.ReadLine());
}
else
Console.WriteLine("The file not exist!");
NET framework有多种读取文本文件的方法。每个都有优点和缺点。。。让我们看两个
第一个是许多其他答案都推荐的答案:
String allTxt = File.ReadAllText(Path.Combine(winDir, "Name.txt"));
这将把整个文件读入一个字符串
。这将是快速和无痛的。但它也有风险。。。如果文件足够大,可能会耗尽内存。即使您可以将整个内容存储到内存中,它也可能足够大,您可以进行分页,并使您的软件运行非常缓慢。下一个选项解决了这个问题
第二种解决方案允许您一次只处理一行,而不将整个文件加载到内存中:
foreach(String line in File.ReadLines(Path.Combine(winDir, "Name.txt")))
// Do Work with the single line.
Console.WriteLine(line);
此解决方案可能需要更长的时间处理文件,因为它将更频繁地处理文件内容。。。但是,它可以防止尴尬的内存错误
我倾向于第二种解决方案,只是因为我偏执地把巨大的<代码>字符串加载到内存中。这不会在编译上崩溃,认为你不能访问“代码> Widir \No.txt < /Case>运行程序,并将错误消息发送到您要得到帮助的地方。请考虑首先查找您的问题标题,即MSDN具有良好的基础。。当执行.exe时,我会看到一个“Program.exe遇到问题,需要关闭”窗口。另外,为什么不Path.Combine(winDir,Name.txt”)
——甚至更好。我对C#还很陌生,所以我还不确定文件IO的最佳方式是什么。你能解释一下我将如何使用它在我的程序中提取一个值列表吗?谢谢:)上面的方法利用了Using块中的streamreader,因此它基本上完成了您试图做的事情,而不必全部写出。它返回表示文本文件行的字符串数组。感谢您的建议!:)
String allTxt = File.ReadAllText(Path.Combine(winDir, "Name.txt"));
foreach(String line in File.ReadLines(Path.Combine(winDir, "Name.txt")))
// Do Work with the single line.
Console.WriteLine(line);