相关疑难解决方法(0)

获取最后10行非常大的文本文件> 10GB

显示非常大的文本文件的最后10行的最有效方法是什么(此特定文件超过10GB).我只想写一个简单的C#应用​​程序,但我不确定如何有效地做到这一点.

c# text large-files

64
推荐指数
6
解决办法
5万
查看次数

快速阅读文本文件的最后一行?

从Java中的[非常非常大的]文件中读取最后一行文本的最快捷,最有效的方法是什么?

java io file

58
推荐指数
4
解决办法
9万
查看次数

从末尾开始读取文件,类似于尾部

在本机C#中,如何从文件末尾读取?

这是相关的,因为我需要读取一个日志文件,读取10k,读取最后3行是没有意义的.

c# file-io

35
推荐指数
3
解决办法
3万
查看次数

阅读文本文件的最后一行

我需要知道如何阅读文本文件的最后一行.我需要找到该行,然后将其处理成一个SQL数据库...我一直在阅读并搜索网络,但我正在努力找到正确的方法来做到这一点.即:

  1. 查找文件的最后一行.
  2. 处理最后一行文件.

我希望这是有道理的.

c#

29
推荐指数
5
解决办法
8万
查看次数

如何读取日志文件的最后"n"行

需要一段代码来读出日志文件的最后"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)

.net c# performance file-io

16
推荐指数
1
解决办法
2万
查看次数

为什么不能在迭代器上下文中使用unsafe关键字?

在看这个问题时,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 != …

c# iterator unsafe

6
推荐指数
2
解决办法
3068
查看次数

Java 中的 Tail -n 1000(Apache commons 等)

我想知道是否已经存在 util 代码来实现部分/全部 *NIX 尾部。我想将某个文件/阅读器的最后 n 行复制到另一个文件/阅读器等。

java tail

5
推荐指数
1
解决办法
2722
查看次数

.net:有没有办法从下到上读取txt文件?

可能重复:
如何在C#中使用迭代器反向读取文本文件

我想知道是否有一种方法从下到上读取文本文件而没有任何性能损失,readLine,movenext方法,但反过来,在.net中这种事情是可能的吗?

为了使问题更有趣,文本文件中有大约10万行,所以我不能用readall作弊,反过来......

更详细一点:我有一组传入的字符串值,前缀为可以排序的int ID.不幸的是,我以错误的顺序获得这些ID.主要问题是字符串值的绝对数量,解决方案中没有RDBMS.所以我真的需要一种方法来存储字符串值,然后在处理过程中反转存储的顺序.文本文件浮现在脑海中,因为此时我没有更好的解决方案.

提前致谢.

.net

5
推荐指数
1
解决办法
2837
查看次数

反向流读取器

我有一个应用程序,我已经负责清理后.应用程序本身相对简单 - 它运行SQL查询,使用Web服务,并将结果吐出到日志文件中.我的工作是在应用程序完成后将文件存档到我们的NAS.它将文件独占锁定,直到完成它们,因此它增加了一点点复杂性.我也不被允许触摸应用程序,只有日志.无论如何,我的申请很简单:

  1. 检查文件是否可以打开(捕获IOException)并在bool []中将其标记为可访问,如果没有抛出异常.
  2. 浏览标记为true的文件数组,使用ReadLine方法将文件的每一行读入StreamReader.因为应用程序偶尔打嗝并且没有完成,我不能简单地使用IOException来判断文件是否已完成 - 我必须实际解析文本.
  3. 如果找到指示完成的文本,请压缩文件,将存档文件加载到NAS,然后删除原始文件.

我的代码工作,它只是非常耗时(日志文件大约500 MB).我对改进的想法涉及从文件底部而不是从顶部开始我的搜索,但StreamReader不支持这样的方法.我不能使用ReadToEnd方法,然后反向读取,因为这只会引发内存不足异常.有什么想法,我可以加快解析日志文件?

c# parsing streamreader

5
推荐指数
1
解决办法
2943
查看次数

如何有效地只读取文本文件的最后一行

需要从大日志文件中获取最后一行.最好的方法是什么?

c# file stream

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

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