基本上我有一个网络应用,我正在尝试使用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
,它也会在文本编辑器中打开文件,这基本上可以保证文件位于其位置。
答案 0 :(得分:1)
您正在尝试加载文件,但您正在使用Class.getResourceAsStream
这样做。如果您要加载文件,请使用FileInputStream.
如果您要加载ClassLoader
可访问的资源,请使用Class.getResourceAsStream
或ClassLoader.getResourceAsStream
。它们是不同的用例,应该用不同的代码处理。
请注意,此处的问题与Reader
或InputStreamReader
无关。这都是关于如何获得InputStream
开始的。话虽如此,我建议您明确指定创建InputStreamReader
时要使用的编码,否则您将使用平台默认编码。
说完所有这些,如果您使用的是现代版本的Java,我会使用Files.newBufferedReader
为指定的Reader
创建Path
,默认为UTF- 8(这可能是你想要的)。