using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ExtractData
{
class Program
{
static void Main(string[] args)
{
StreamReader sr = File.OpenText("test.txt");
//string line = sr.ReadToEnd();
string line = sr.ReadLine();
sr.Close();
while (line != null) ;
Console.WriteLine(line);
Console.ReadLine();
}
}
}
答案 0 :(得分:2)
以下是逐行读取文件的正确方法:
using (StreamReader sr = File.OpenText("test.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
Console.WriteLine(line);
}
一旦using
块结束,流将自动关闭。
答案 1 :(得分:1)
约翰尼是对的。您想要执行以下操作:
int counter = 0;
string line;
// Read the file and display it line by line.
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
Console.WriteLine (line);
counter++;
}
file.Close();
// Suspend the screen.
Console.ReadLine();
答案 2 :(得分:0)
sr.Close必须在读取文件后执行,并且需要在写入函数周围执行:
while(){
function();
}
如果使用C#这行!= null就可以了,我不太舒服,但我认为StreamReader中有一个函数可以检查流的结尾。
但是学习C#的基本语法是个好主意。
答案 3 :(得分:0)
sr.Close()关闭文件流。
阅读这些行的最简单方法是:
string lines[] = File.ReadAllLines("c:\\test.txt");
答案 4 :(得分:0)
基本上,代码的错误在于,行的值永远不会改变,从而导致应用程序中出现无限循环。你也没有在while循环中做任何事情。
我已在下面更正了您的代码:
using System;
using System.IO;
namespace ExtractData
{
class Program
{
static void Main(string[] args)
{
StreamReader sr = File.OpenText("test.txt");
string line;
while ((line = sr.ReadLine()) != null)
{ Console.WriteLine(line); }
sr.Close();
Console.ReadKey();
}
}
}
但是,我建议(如其他人所述)以下之一:
如果它是一个小文件,您可以将整个文件加载到内存中并从那里使用
using System;
using System.IO;
namespace ExtractData
{
class Program
{
static void Main(string[] args)
{
foreach (var line in File.ReadAllLines("test.txt"))
{ Console.WriteLine(line); }
Console.ReadKey();
}
}
}
或者,逐行读取文件
using System;
using System.IO;
namespace ExtractData
{
class Program
{
static void Main(string[] args)
{
using (StreamReader sr = File.OpenText("test.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
{ Console.WriteLine(line); }
}
Console.ReadKey();
}
}
}