显示非常大的文本文件的最后10行的最有效方法是什么(此特定文件超过10GB).我只想写一个简单的C#应用程序,但我不确定如何有效地做到这一点.
在本机C#中,如何从文件末尾读取?
这是相关的,因为我需要读取一个日志文件,读取10k,读取最后3行是没有意义的.
我需要知道如何阅读文本文件的最后一行.我需要找到该行,然后将其处理成一个SQL数据库...我一直在阅读并搜索网络,但我正在努力找到正确的方法来做到这一点.即:
我希望这是有道理的.
需要一段代码来读出日志文件的最后"n行".我从网上得到了以下代码.我是C sharp的新手.由于日志文件可能非常大,我想避免读取整个文件的开销.有人建议任何性能增强.我真的不想读每个角色并改变位置.
var reader = new StreamReader(filePath, Encoding.ASCII);
reader.BaseStream.Seek(0, SeekOrigin.End);
var count = 0;
while (count <= tailCount)
{
if (reader.BaseStream.Position <= 0) break;
reader.BaseStream.Position--;
int c = reader.Read();
if (reader.BaseStream.Position <= 0) break;
reader.BaseStream.Position--;
if (c == '\n')
{
++count;
}
}
var str = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud) 在看这个问题时,Jon在回答问题方面做得很好......" 如何用迭代器反向读取文本文件 ".并且有一个类似的问题,我回答使用指针hocus pocus ..'.net有一种方法从它自己关闭之前从下到上读取文本文件 ....
现在我开始尝试使用指针来解决这个问题,好吧,它看起来很粗糙和边缘粗糙......
public class ReadChar : IEnumerable<char>
{
private Stream _strm = null;
private string _str = string.Empty;
public ReadChar(string s)
{
this._str = s;
}
public ReadChar(Stream strm)
{
this._strm = strm;
}
public IEnumerator<char> GetEnumerator()
{
if (this._strm != null && this._strm.CanRead && this._strm.CanSeek)
{
return ReverseReadStream();
}
if (this._str.Length > 0)
{
return ReverseRead();
}
return null;
}
private IEnumerator<char> ReverseReadStream()
{
long lIndex = this._strm.Length;
while (lIndex != … 我想知道是否已经存在 util 代码来实现部分/全部 *NIX 尾部。我想将某个文件/阅读器的最后 n 行复制到另一个文件/阅读器等。
可能重复:
如何在C#中使用迭代器反向读取文本文件
我想知道是否有一种方法从下到上读取文本文件而没有任何性能损失,readLine,movenext方法,但反过来,在.net中这种事情是可能的吗?
为了使问题更有趣,文本文件中有大约10万行,所以我不能用readall作弊,反过来......
更详细一点:我有一组传入的字符串值,前缀为可以排序的int ID.不幸的是,我以错误的顺序获得这些ID.主要问题是字符串值的绝对数量,解决方案中没有RDBMS.所以我真的需要一种方法来存储字符串值,然后在处理过程中反转存储的顺序.文本文件浮现在脑海中,因为此时我没有更好的解决方案.
提前致谢.
我有一个应用程序,我已经负责清理后.应用程序本身相对简单 - 它运行SQL查询,使用Web服务,并将结果吐出到日志文件中.我的工作是在应用程序完成后将文件存档到我们的NAS.它将文件独占锁定,直到完成它们,因此它增加了一点点复杂性.我也不被允许触摸应用程序,只有日志.无论如何,我的申请很简单:
我的代码工作,它只是非常耗时(日志文件大约500 MB).我对改进的想法涉及从文件底部而不是从顶部开始我的搜索,但StreamReader不支持这样的方法.我不能使用ReadToEnd方法,然后反向读取,因为这只会引发内存不足异常.有什么想法,我可以加快解析日志文件?
c# ×7
.net ×2
file ×2
file-io ×2
java ×2
io ×1
iterator ×1
large-files ×1
parsing ×1
performance ×1
stream ×1
streamreader ×1
tail ×1
text ×1
unsafe ×1