Java 无法读取InputStream

Java 无法读取InputStream,java,servlets,Java,Servlets,下面几行是servlet的一部分,它给了我一个错误“java.lang.NullPointerException” 你编辑了你的文章。您确定它是NullPointerException而不是非法argumentException JavaDocs: 如果找不到您要查找的文件,将返回null 当参数为null时,抛出一个IllegalArgumentExeception。提到的输入可能是ImageIO输入参数 我猜确实找不到输入文件 这将符合你原来的问题。请尝试以下操作: ServletConte

下面几行是servlet的一部分,它给了我一个错误“java.lang.NullPointerException”


你编辑了你的文章。您确定它是
NullPointerException
而不是
非法argumentException

JavaDocs:

如果找不到您要查找的文件,将返回
null

当参数为null时,抛出一个
IllegalArgumentExeception
。提到的
输入
可能是ImageIO输入参数

我猜确实找不到输入文件

这将符合你原来的问题。请尝试以下操作:

ServletContext context = getServletContext();
InputStream kapil= context.getResourceAsStream("Desktop/images.jpg");
if (kapil != null){
    //the above line generates the exception
    BufferedImage bufferedImage = ImageIO.read(kapil);
} else {
   // Use a logging framework if you have it.
   System.out.println("The input stream is null!");
}

我不确定您是否可以使用“Desktop/”作为文件路径。。。在windows上,它实际上类似于C:/users/so_和_so/../desktop(搜索它)来查找servlet,该资源必须在servlet容器中可用(该容器不包括桌面上的图像)。@kapil-图像是否需要位于桌面文件夹中?如果您将桌面文件夹移动到webapp的根目录下(与WEB-INF文件夹处于同一级别),代码应该可以工作。@Chris是的,我这样做了,它工作了。非常感谢。:-)@kapil-注意,您的用户也可以直接下载图像,而无需使用servlet。如果要防止这种情况,请将桌面文件夹放在WEB-INF文件夹中,并将代码更改为:getResourceAsStream(“WEB-INF/Desktop/images.jpg”);对不起,我花了这么长时间才记下你的答案。我从来不知道你已经回答了。
ServletContext context = getServletContext();
InputStream kapil= context.getResourceAsStream("Desktop/images.jpg");
if (kapil != null){
    //the above line generates the exception
    BufferedImage bufferedImage = ImageIO.read(kapil);
} else {
   // Use a logging framework if you have it.
   System.out.println("The input stream is null!");
}