Java 使用InputStreamReader读取文件?

Java 使用InputStreamReader读取文件?,java,Java,基本上,我有一个web应用程序,我正在尝试使用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/ecl

基本上,我有一个web应用程序,我正在尝试使用
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
它会在一个文本编辑器中打开文件,基本上可以确保文件在它的位置。

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

请注意,这里的问题与
读取器
InputStreamReader
无关。首先是关于如何获得
InputStream
。话虽如此,我鼓励您明确指定在创建
InputStreamReader
时要使用的编码,否则您将使用平台默认编码


话虽如此,如果您使用的是Java的现代版本,我将使用为指定的
路径创建
读取器
,默认为UTF-8(这可能是您想要的).

我很想这么说,但是你能告诉我如何让类加载器可以访问文件吗?@IAintFixingIt:我们对你的类一无所知。例如,它是否在jar文件中?如果是,您可能还需要将JSON文件捆绑到jar文件中。但是,如果您试图访问文件系统上的文件,最好使用
FileInputStream
@JOSkeet no它不在任何jar文件中,classpath=“/home/hazrat/workspace/RemoteSystemsTempFiles/Duck/src/Duck/reg/pack/Auth.class”正确,将文件复制到
/home/hazrat/workspace/RemoteSystemsTempFiles/Duc”下‌​k/src
可能会使其可用。但是,同样,
FileInputStream
将是一个更自然的解决方案,您还没有解释为什么不想使用它。@JoSkeet我正在尝试在我的web应用程序上实现youtube api,并尝试检索一些youtube评论,在它的教程中,它们似乎正在使用“InputStreamReader”,所以我选择了它