使用InputStreamReader读取文件?

时间:2017-11-22 08:42:57

标签: java

基本上我有一个网络应用,我正在尝试使用InputStreamReader阅读youtube API client_secrets.json并将其值分配给Reader

我试过了:

Reader clientSecretReader = new InputStreamReader(
            Auth.class.getResourceAsStream("/home/hazrat/Documents/eclipse-jee-neon-3-linux-gtk-x86_64/eclipse/client_secrets.json"));

仅供参考:此文件位于不在我的eclipse资源目录中的外部目录中。

但是上面的代码抛出了nullpointerexception,即使我尝试使用我的终端nano /home/hazrat/Documents/eclipse-jee-neon-3-linux-gtk-x86_64/eclipse/client_secrets.json,它也会在文本编辑器中打开文件,这基本上可以保证文件位于其位置。

1 个答案:

答案 0 :(得分:1)

您正在尝试加载文件,但您正在使用Class.getResourceAsStream这样做。如果您要加载文件,请使用FileInputStream.如果您要加载ClassLoader可访问的资源,请使用Class.getResourceAsStreamClassLoader.getResourceAsStream。它们是不同的用例,应该用不同的代码处理。

请注意,此处的问题与ReaderInputStreamReader无关。这都是关于如何获得InputStream开始的。话虽如此,我建议您明确指定创建InputStreamReader时要使用的编码,否则您将使用平台默认编码。

说完所有这些,如果您使用的是现代版本的Java,我会使用Files.newBufferedReader为指定的Reader创建Path,默认为UTF- 8(这可能是你想要的)。