Apache Common FileUtils readLines 方法歧义调用

blu*_*609 3 apache io android readlines fileutils

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

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

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

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

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

在此处输入图片说明

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

fun*_*uit 6

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

String encoding=null;
FileUtils.readLines(file, encoding);
Run Code Online (Sandbox Code Playgroud)

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

FileUtils.readLines(file, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试使用默认字符集,请参阅: 如何在 Java 中查找默认字符集/编码?

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

FileUtils.readLines(file, Charset.defaultCharset());
Run Code Online (Sandbox Code Playgroud)