如何在Windows上读取大型文本文件?

80

我有一个较大的服务器日志文件(~750 MB),无法使用Notepad或Notepad ++打开(它们都会显示文件太大)。

有人能建议一个程序(适用于Windows),每次仅将文件的一小部分读入内存吗?

还是我需要编写自己的应用程序来解析这个文件?


1
记事本只是一个编辑控件。 :) - i_am_jorf
4
您的问题已经在这个问题中得到解决:https://dev59.com/cnVC5IYBdhLWcg3w21Mq。 - backslash17
1
重复的问题 https://dev59.com/cnVC5IYBdhLWcg3w21Mq :有没有适合打开大型文本文件的文本编辑器? - Hernán Eche
@i_am_jorf,您所说的“编辑控件”是什么意思? - Pacerier
1
请看Total Commander。它可以瞬间读取任何文件。 - Gabriel
显示剩余4条评论
13个回答

57

4
就我所知,我刚试了两次使用这个应用打开一个1.08GB的SQL文件,在Windows XP上运行时它会冻结。 - Matt
1
这个程序利用本地存储。请在浏览器中尝试此链接:http://jenson.in/demos/open_giant_files_in_browser.php - Jenson M John
如果原始网站无法访问,请从这里下载。http://www.portablefreeware.com/?id=693 - Rosdi Kasim
1
我认为链接坏了? - angryITguy
4
但这个工具只显示了几行,我该如何搜索这个大文件? - Markus Pscheidt
显示剩余7条评论

22

非常好用,而且我不需要下载或安装任何东西 :) - Ivan Kuckir
我尝试使用一个20MB的文本文件,但它崩溃了。 - Abel Callejo
21
本地文件的在线编辑器?真的吗? - Win4ster
1
@Win4ster 本地应用程序如sublime/notepad++加载这些文件非常缓慢。我发现这个工具很方便快速扫描大文件。适用于非敏感数据。 - angryITguy
1
@Win4ster 这个页面说明文件是通过JavaScript本地加载的。我试过一个500MB的文件,它立即打开并显示分页以便浏览,包括一个可以瞬间移动到文件末尾的选项。 - Bill Tarbell
显示剩余2条评论

11

使用EmEditor,非常好用,我用它打开了一个超过500MB的文件。


这个应用程序对我来说非常好用,但是它需要花费一些钱。 - Mosquito Mike
@MosquitoMike 30天免费试用 - rluks

9

Total Commander的综合文本查看器可以轻松查看巨大的文件(>10GB),并且提供不同的视图,例如十六进制视图。


+1 它立即打开了我的 300Mb SQL 文件,并且搜索是立即的。由于界面有点棘手,我不得不发现如何打开文件查看器:只需选择文件并按 F3 键。 - chris
你如何打开文本查看器? - borievka
https://farmanager.com/index.php?l=en - nim

6

我使用 BareTail 已经有一段时间了,用于查看大型日志文件(达到几个GB),它的工作效果非常好,运行速度也快。这款软件有免费版和商业专业版。

他们 它具有以下功能:

  • 实时文件
  • 优化的实时查看引擎,可以查看任何大小的文件(> 2GB)
  • 即时跳转到文件中的任何位置
  • 查看网络文件
  • 可配置的换行符
  • 可配置的TAB扩展
  • 可配置字体,包括间距和偏移量,最大限度地利用屏幕空间

另一个选择是 Far Manager。查看几GB的文件不会成为问题(内存占用小),但在编辑模式下打开文本文件可能需要几GB的RAM,请注意。我不知道在Far中可以查看/编辑的文件大小限制。


谢谢你的建议。BareTail没有问题,可以处理52GB的文件,并提供非常灵敏的滚动。Far Manager也可以打开该文件,但它有一个古怪的文本终端用户界面。 - Paul Jurczak
1
FarManager确实有些奇怪,它的“编辑”功能需要加载整个文件……但解决了我查看/搜索的问题 :) BareTail很完美,但不允许编辑。 - Benj

6

绝对推荐EditPad Lite

它不仅在打开文件时非常快,而且诸如“替换所有”,去除头部/尾部空格或将内容转换为小写等功能也非常快。

而且它与Notepad++非常相似;)


与其他所有工具相比(更不用说获胜者了),这是我最喜欢的。 - Olaf


3

2

如果你会编码,可以写一个控制台应用程序。以下是C#版本的代码示例,你可以根据自己需求对结果进行分割、执行等操作:

SqlCommand command = null;
try
{
    using (var connection = new SqlConnection("XXXX"))
    {
        command = new SqlCommand();
        command.Connection = connection;
        if (command.Connection.State == ConnectionState.Closed) command.Connection.Open();
        // Create an instance of StreamReader to read from a file.
        // The using statement also closes the StreamReader.
        using (StreamReader sr = new StreamReader("C:\\test.txt"))
        {
            String line;
            // Read and display lines from the file until the end of 
            // the file is reached.
            while ((line = sr.ReadLine()) != null)
            {
                Console.WriteLine(line);
                command.CommandText = line;
                command.ExecuteNonQuery();
                Console.Write(" - DONE");
            }
        }
    }
}
catch (Exception e)
{
    // Let the user know what went wrong.
    Console.WriteLine("The file could not be read:");
    Console.WriteLine(e.Message);
}
finally
{
    if (command.Connection.State == ConnectionState.Open) command.Connection.Close();
}

2
为什么需要使用ADO.NET从文件系统中读取文件? - MaksymD

0

虽然我不太喜欢自推销我的东西(其实也不是),但 PowerPad 可以打开非常大的文件。

否则,我建议使用十六进制编辑器。


链接已经失效。 - JustAC0der

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接