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