【问题标题】:Replacing deprecated Java method替换不推荐使用的 Java 方法
【发布时间】:2019-10-15 11:35:04
【问题描述】:

我有多个使用过时方法的调用,例如

org.apache.commons.io.FileUtils.readFileToString(File file)

org.apache.commons.io.IOUtils.toString(InputStream input)
org.apache.commons.io.IOUtils.toInputStream(String input)

现在,我知道这些方法是deprecated 以及用哪些方法替换它们,例如

readFileToString(final File file, final Charset encoding)

不同之处在于我必须指定编码。

现在,因为我的主要目标是在删除旧方法的同时保留行为,即使这意味着保留错误/怪异,我想调用新方法,使其与旧方法一样工作。 阅读新方法的 Javadoc 会发现

* @param encoding the encoding to use, {@code null} means platform default

我现在的假设是,如果我将null 作为编码参数传递给新方法,它的行为将与旧方法一样。这意味着旧方法始终使用平台默认值。但是有没有办法检查呢?

【问题讨论】:

  • 写个测试,应该是绿色的,重构后应该还是绿色的。
  • 该库是开源的,大多数 IDE 都可以为您下载源 JAR。如果文档中的内容不够清楚,只需检查旧方法的代码即可。

标签: java character-encoding deprecated fileutils ioutils


【解决方案1】:

正如预期的那样,它使用了默认编码,readFileToString

使用 VM 的默认编码将文件的内容读入字符串。该文件始终处于关闭状态。

还有IOUtils.toString:

使用平台的默认字符编码以字符串形式获取 byte[] 的内容。

【讨论】:

    【解决方案2】:

    就像Apache Common-io documentation 说的:

    使用 VM 的默认编码将文件的内容读入字符串。该文件始终处于关闭状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-08
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2023-03-24
      相关资源
      最近更新 更多