如何读取大约2 GB的文本文件?

Abh*_*ngh 161 notepad++ openoffice-writer text-files

我有一个内存大于2 GB的.txt文件.问题是我无法使用Notepad,Notepad ++或任何其他编辑器程序打开它.

有解决方案吗

Man*_*hoo 152

试试Glogg.快速,智能的日志浏览器.

我已经打开大小的日志文件左右2 GB,且搜索速度也非常快.

  • 请注意,这是一个READ ONLY编辑器! (21认同)
  • 我可以使用Glogg快速打开超过2 GB的文件,既不会打开Notepad ++也不会打开写字板(或任何其他标准文本编辑器).谢谢! (7认同)
  • IMO - 这应该是公认的答案.尽管Glogg是一个读者而不是一个编辑器,但OP要求_read_大文本文件. (4认同)
  • 我设法运行Glogg无权在我的Windows笔记本电脑上安装程序,如下所示:下载Windows安装程序exe而不是执行安装程序exe,提取它(例如7-Zip).在解压缩的根文件夹中,运行glogg.exe (2认同)
  • 我试过了。它真的很快。 (2认同)

小智 92

无论大小如何,写字板都会打开任何文本文件.但是,与文本编辑器相比,它的功能有限.

  • 不是这样 - 它在52GB的文本文件上窒息. (30认同)
  • @Joe这回答了原来的问题.我不同意Kiki的唯一地方是写字板是一个文本编辑器. (13认同)
  • @RobertM.智能程序不会立即将整个内容加载到内存中.在具有4 GB RAM的计算机上加载52 GB文件是完全可能的. (10认同)
  • 请记住您的机器有多少内存.不能期望在没有大量RAM的情况下加载52GB文件:P (9认同)
  • +1 @Kiki.我只是使用写字板打开一个记事本++不能的1.2G文件. (5认同)
  • Wordpad和Notepad ++窒息.我打开~3GB. (2认同)

toh*_*ohu 49

您可以使用工具将文本文件拆分为较小的块,而不是加载/读取整个文件.如果您使用的是Linux,则可以使用该split命令(请参阅此stackoverflow线程).对于Windows,有几种工具可用,如HJSplit(请参阅此超级用户线程).


ray*_*wel 11

EmEditor对我来说效果很好.它是共享软件IIRC,但在许可证到期后不会停止工作.

  • 我现在已经在家里测试了 EmEditor 的试用版,印象非常深刻,我打算在 2 月份在工作中试用它。然后购买。 (2认同)

小智 11

我使用UltraEdit编辑大文件.我用UltraEdit打开的最大大小约为2.5 GB.与Notepad ++相比,UltraEdit还有一个很好的十六进制编辑器.

  • UltraEdit可以编辑任何大小的文件,与安装的RAM大小无关.在安装了2 GB RAM的计算机上编辑超过8 GB的文件没有问题.为了使用UE高效编辑大型文件,应根据电源提示中的说明更改默认值:[大文件文本编辑器](http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/large_file_handling.html). (2认同)

Luk*_*kas 10

我总是使用010 Editor来打开巨大的文件.它可以轻松处理2 GB.我用010编辑器操作50 GB的文件:-)

它现在已商业化,但它有试用版.

  • 它不是免费的. (2认同)

bac*_*ack 8

如果您只需要阅读文件,我可以建议大文本文件查看器. https://www.portablefreeware.com/?id=693

并且也参考这个

文本编辑器打开大(巨大,巨大,大)文本文件

否则,如果您想制作自己的工具,请试试这个.我认为你知道c#中的文件流阅读器

const int kilobyte = 1024;
const int megabyte = 1024 * kilobyte;
const int gigabyte = 1024 * megabyte;

public void ReadAndProcessLargeFile(string theFilename, long whereToStartReading = 0)
{
    FileStream fileStream = new FileStream(theFilename, FileMode.Open, FileAccess.Read);
    using (fileStream)
    {
        byte[] buffer = new byte[gigabyte];
        fileStream.Seek(whereToStartReading, SeekOrigin.Begin);
        int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
        while(bytesRead > 0)
        {
            ProcessChunk(buffer, bytesRead);
            bytesRead = fileStream.Read(buffer, 0, buffer.Length);
        }
    }
}

private void ProcessChunk(byte[] buffer, int bytesRead)
{
    // Do the processing here
}
Run Code Online (Sandbox Code Playgroud)

请亲切地参考

http://www.codeproject.com/Questions/543821/ReadplusBytesplusfromplusLargeplusBinaryplusfilepl


Pan*_*ool 5

尝试使用Vimemacs(如果在32位模式下编译,则具有较低的最大缓冲区大小限制),十六进制工具