Java getResourceAsStream-它的编码是什么?

Java getResourceAsStream-它的编码是什么?,java,file-io,Java,File Io,我正在使用访问本地文件。它假设文件是什么编码?我不知道如何在getResourceStream()中使用编码,通常您可以查询文件.encoding属性或Charset.defaultCharset()以查找当前的默认编码。最好在代码中明确指定所需的编码(即“UTF-8”)。这样,它甚至可以跨不同的平台工作 另外,关于如何读取文件,您可以查看这篇文章Jon Skeet的答案。InputStreams没有编码。它们只是字节流。s表示带有编码的文本。您可以从InputStream创建具有特定字符集的读

我正在使用访问本地文件。它假设文件是什么编码?

我不知道如何在
getResourceStream()
中使用编码,通常您可以查询
文件.encoding
属性或
Charset.defaultCharset()
以查找当前的默认编码。最好在代码中明确指定所需的编码(即“UTF-8”)。这样,它甚至可以跨不同的平台工作


另外,关于如何读取文件,您可以查看这篇文章Jon Skeet的答案。

InputStream
s没有编码。它们只是字节流。s表示带有编码的文本。您可以从
InputStream
创建具有特定字符集的
读取器,如下所示:

Reader reader = new InputStreamReader(inputStream, "UTF-8");

如果您使用的字符集保证在所有Java平台(如UTF-8)上都受支持,你可以避免处理不可能的
UnsupportedEncodingException
s,方法是使用s
Charsets
类中的常量,比如
Charsets.UTF_8

为什么需要番石榴呢?@Casebash:我刚才提到番石榴,因为它使处理Charsets更加方便。您不需要Guava来使用阅读器或字符集(尽管它确实有一些很棒的实用程序,可以让事情变得比我在这里提到的更简单)。由于Java 1.7,您可以使用
StandardCharsets.UTF_8.name()
来获取“UTF-8”常量。@LaurentG:但通常不需要实际获取名称。。。大多数API(例如,
InputStreamReader
)可以将
字符串
作为字符集名称,它们的版本也应该直接使用
字符集