【问题标题】:Apache Common FileUtils readLines method ambiguous callApache Common FileUtils readLines 方法模糊调用
【发布时间】:2019-01-20 21:28:25
【问题描述】:

我在尝试使用 Android Studio 使用 Apache commons IO 第三方 API 时偶然发现了这个问题。

基本上当我尝试调用 FileUtils.readLines() 方法时,有 3 个选项:

  • readLines(文件文件) >>>> 已弃用
  • readLines(文件文件,字符串编码)
  • readLines(文件文件,字符集编码)

第一个选项已被弃用,这意味着我不应该再使用它,所以我只需键入 readLines(file,null) 但是,现在的问题是 Android Studio 没有不知道我正在使用哪个 readLines() 方法签名,因为 readLines(file,null) 对于第二个和第三个方法签名都有效。

下面的截图进一步解释我的意思:

有人可以请教我吗?如何告诉 Android Studio 我想为 FileUtils.readLines() 使用的特定方法签名?

【问题讨论】:

    标签: android apache io readlines fileutils


    【解决方案1】:

    IDE 无法猜测您的 null 是什么。无论是字符串还是字符集。您可以尝试以下方法:

    String encoding=null;
    FileUtils.readLines(file, encoding);
    

    但我认为这行不通,因为readLines 方法需要知道您的文件使用什么编码。因此,例如,如果您的文件使用 UTF-8,您可以这样写

    FileUtils.readLines(file, StandardCharsets.UTF_8);
    

    或者您可以尝试使用默认字符集,请参见: How to Find the Default Charset/Encoding in Java?

    正如 Apache 文档所说,不推荐使用的版本 readLines(File file) 使用默认字符集。你可以写这个来得到一个等价的:

    FileUtils.readLines(file, Charset.defaultCharset());
    

    【讨论】:

    • 非常感谢这位朋友!哦,我明白了,是的,我用 Charset.defaultCharset() 尝试了你的建议,它有效,哈哈。我也尝试过 String encoding = null; FileUtils.readLines(file,encoding) 但是那行不通。非常感谢!
    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多