当前位置: 首页 > 面试题库 >

等同于InputStream或Reader的Files.readAllLines()?

龙德海
2023-03-14
问题内容

我有一个通过以下方法读入列表的文件:

List<String> doc = java.nio.file.Files.readAllLines(new File("/path/to/src/resources/citylist.csv").toPath(), StandardCharsets.UTF_8);

是否有任何不错的(单行)Java 7/8 /
nio2方法可以在可执行Jar内的文件中实现相同的功能(大概必须使用InputStream读取)?也许是一种通过类加载器打开InputStream的方法,然后以某种方式将其强制/转换/包装为Path对象?还是包含与File.readAllLines(…)等效的InputStream或Reader的一些新子类?

我知道我 可以 用半页代码或通过某些外部库以传统方式完成此操作…但是在我这样做之前,我想确保Java的最新版本不能“立即使用” ”。


问题答案:

An InputStream代表字节流。这些字节不一定形成可以逐行读取的(文本)内容。

如果您知道InputStream可以将解释为文本,则可以将其包装在中InputStreamReader并用于BufferedReader#lines()逐行使用它。

try (InputStream resource = Example.class.getResourceAsStream("resource")) {
  List<String> doc =
      new BufferedReader(new InputStreamReader(resource,
          StandardCharsets.UTF_8)).lines().collect(Collectors.toList());
}


 类似资料:
  • 问题内容: 我试图从我在主java文件中创建的数组中添加,删除和引用项目,但是我在弄清楚正确的语法时遇到了麻烦。在动作脚本中,它们具有push()和pop()来添加和删除数组中的项目,android中是否有等效项? 问题答案: 在Java中,数组的大小是固定的(初始化后),这意味着您无法在数组中添加或删除项目。 上面的代码段表示整数数组的长度为10。如果不将引用重新分配给新数组,则不能添加第11个

  • 问题内容: Reader和InputStream有什么区别?什么时候使用什么?如果我可以使用Reader读取字符,为什么要使用inputstream,我想读取对象吗? 问题答案: InputStream是从资源获取信息的原始方法。它不执行任何类型的转换就逐字节地获取数据。如果您正在读取图像数据或任何二进制文件,则这是要使用的流。 阅读器是为字符流设计的。如果您正在阅读的信息全部是文本,则阅读器将为

  • 今天我注意到这个node.js代码: 给出输出 这很奇怪;如果某物不等于0或大于0,那么它为什么大于或等于0呢?发生什么事了?

  • 问题内容: 我在PostgreSQL中有一个名为的关系,该关系包含2个字段:和,我想找到具有最高值的产品。据我所知,有两种方法可以做到: 或者 他们的执行速度有什么不同吗? 问题答案: 如果有任何行,第一个查询将失败(如Gordon所示)。 仅当所有行都具有时,第二个查询才会失败。因此,它在大多数情况下应该是可用的。(而且速度更快。) 如果在 Postgres 12或更早版本中 需要NULL安全查

  • 问题内容: 在PHP中可以做到。在JavaScript中,您通常会使用相同的方法,但这并不完全相同。如果确实存在,但条件是或(或可能还有其他值),则条件也将评估为false 。 JavaScript 中PHP的完美替代品是什么? 从更广泛的意义上讲,有关JavaScript处理不存在的变量,没有值的变量等的通用完整指南会很方便。 问题答案: 我通常使用运算符: 如果该属性不存在或其值是,它将返回。

  • 问题内容: 这是执行字符串替换的两种方法: 如何使用Java做与第一种方法类似的操作? 问题答案: 或更短: