【问题标题】:Why are there no simple IO utils in the JDK for reading an entire file into a String?为什么 JDK 中没有用于将整个文件读入 String 的简单 IO 工具?
【发布时间】:2009-08-18 18:16:51
【问题描述】:

my answer about reading an entire file into memory using scala.io.Source 的 cmets 中,我断言 Java 中没有 read-whole-file-into-String 方法的原因是它(当然)在文件大小和你有多少堆。

不过,我猜每个人都有一些方法,比如:

String contents = IOUtil.readFile(f, "utf-8");

而且方法的实现只是几行代码。 他们为什么不首先将它添加到 JDK? 是我的(可扩展性)原因,还是有其他原因被省略了?

【问题讨论】:

  • “他们为什么不首先将它添加到 JDK 中?”您希望 JDK 的作者之一回答这个问题吗?或者你在发泄你不喜欢的事情?
  • “为什么 JRE 中没有 X”问题没有尽头,没有一个是可以回答的。
  • 但如果它会因为不明显的原因而有害,那么知道为什么会很有趣(并且具有教育意义)。
  • 在编程中,拥有一个标准的 10 个工具,你可以组合起来完成各种工作,这比拥有这 10 个工具加上 10 个预先构建的 1500 个特定工具要好得多。如果你能做到5 行代码,只需执行此操作,将库排除在外(或编写您自己的)。 Java 不是一种脚本语言,如果它在标准库中包含所有内容将是有意义的,因为您并没有真正创建整个应用程序,您正在创建一个脚本,其中必须编写自己的子例程是您的大部分代码。
  • @S Lott:如果您查看我的问题,您会发现我绝不会说 Sun 不将其包含在 JDK 中是错误的。我只是想知道人们认为遗漏的原因是什么!我很生气这已经结束:这是一个真正的问题,它与编程有关。

标签: java file io


【解决方案1】:

因为文件可以是任意大小,而且在没有进行大量检查和平衡以确保不会使 VM 左右崩溃的情况下执行此类操作是一种糟糕的编程习惯。

【讨论】:

  • System.exit() 使 VM 左右崩溃,但这是在 JRE 中。正确的文档是关键。
  • 另外,类似的方法存在于许多其他语言中,例如 Python 和 C#。
  • 我想我更高兴 JDK 强迫程序员(大概)思考整个过程,而不是“在这里,调用它并丢弃你所有的内存!”
【解决方案2】:

我认为你自己的答案是正确的。如果您的文件长 1GB 怎么办?

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 2021-11-21
    • 2016-08-20
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多