C# 从文本文件中读取一行并返回
我正在开发一个C#应用程序,在这个应用程序中,我需要从文本文件中读取一行,然后返回到第一行 由于文件大小可能太大,我无法将其复制到数组中 我试过这个密码C# 从文本文件中读取一行并返回,c#,text,file-io,C#,Text,File Io,我正在开发一个C#应用程序,在这个应用程序中,我需要从文本文件中读取一行,然后返回到第一行 由于文件大小可能太大,我无法将其复制到数组中 我试过这个密码 StreamReader str1 = new StreamReader(@"c:\file1.txt"); StreamReader str2 = new StreamReader(@"c:\file2.txt"); int a, b; long pos1, pos2; while (!str1.EndOfStream &&
StreamReader str1 = new StreamReader(@"c:\file1.txt");
StreamReader str2 = new StreamReader(@"c:\file2.txt");
int a, b;
long pos1, pos2;
while (!str1.EndOfStream && !str2.EndOfStream)
{
pos1 = str1.BaseStream.Position;
pos2 = str2.BaseStream.Position;
a = Int32.Parse(str1.ReadLine());
b = Int32.Parse(str2.ReadLine());
if (a <= b)
{
Console.WriteLine("File1 ---> " + a.ToString());
str2.BaseStream.Seek(pos2, SeekOrigin.Begin);
}
else
{
Console.WriteLine("File2 ---> " + b.ToString());
str1.BaseStream.Seek(pos1, SeekOrigin.Begin);
}
}
StreamReader str1=newstreamreader(@“c:\file1.txt”);
StreamReader str2=新的StreamReader(@“c:\file2.txt”);
INTA,b;
长pos1,pos2;
而(!str1.EndOfStream&&!str2.EndOfStream)
{
pos1=str1.BaseStream.Position;
pos2=str2.BaseStream.Position;
a=Int32.Parse(str1.ReadLine());
b=Int32.Parse(str2.ReadLine());
如果(a可以用于大文件,则延迟执行,不会将整个文件加载到内存中,因此可以在IEnumerable
类型中操作行:
var lines = File.ReadLines("path");
如果您使用的是旧的.NET版本,下面是如何自己构建ReadLines
:
public IEnumerable<string> ReadLine(string path)
{
using (var streamReader = new StreamReader(path))
{
string line;
while((line = streamReader.ReadLine()) != null)
{
yield return line;
}
}
}
public IEnumerable可读行(字符串路径)
{
使用(var streamReader=新streamReader(路径))
{
弦线;
而((line=streamReader.ReadLine())!=null)
{
收益率回归线;
}
}
}
我更喜欢使用的另一种方式
创建如下函数:
string ReadLine( Stream sr,bool goToNext)
{
if (sr.Position >= sr.Length)
return string.Empty;
char readKey;
StringBuilder strb = new StringBuilder();
long position = sr.Position;
do
{
readKey = (char)sr.ReadByte();
strb.Append(readKey);
}
while (readKey != (char)ConsoleKey.Enter && sr.Position<sr.Length);
if(!goToNext)
sr.Position = position;
return strb.ToString();
}
谢谢,有没有办法不读取整个文件?@Arashdn:你试过这种方法吗?这种方法不是读取整个文件我使用的是旧版本的.net,它不包含file.ReadLines
Stream stream = File.Open("C:\\1.txt", FileMode.Open);