Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.io.File的listFiles方法引发NullPointerException_Java_File_Usb Drive - Fatal编程技术网

java.io.File的listFiles方法引发NullPointerException

java.io.File的listFiles方法引发NullPointerException,java,file,usb-drive,Java,File,Usb Drive,我正在运行这段代码,它在NetBeans IDE中运行良好,但当我构建JAR文件并通过单击运行它时,它崩溃并抛出一个NullPointerException 此代码在(文件f:files)的上崩溃 代码正在访问我的闪存驱动器上的一个文件夹,我检查了路径和它的细节 println语句的输出如下所示: 第一组用于IDE,第二组用于命令行: IDE输出: data files is folder: true data files is file: false data files: [Ljava.io

我正在运行这段代码,它在NetBeans IDE中运行良好,但当我构建JAR文件并通过单击运行它时,它崩溃并抛出一个NullPointerException

此代码在(文件f:files)的
上崩溃
代码正在访问我的闪存驱动器上的一个文件夹,我检查了路径和它的细节

println语句的输出如下所示: 第一组用于IDE,第二组用于命令行:

IDE输出:

data files is folder: true
data files is file: false
data files: [Ljava.io.File;@a298b7
data folder: F:\JambTextProject\Saved Images
data folder path : F:\JambTextProject\Saved Images
命令行输出(通过运行java-jar jarName.jar获得):

那会是什么呢? 为什么代码在IDE中运行良好,但在jar中运行时会崩溃?
闪存驱动器有391 MB的可用空间,要访问的文件夹大小为163 MB,而磁盘上的大小为292 MB。根据
文件.listFiles的javadoc,方法:

如果此抽象路径名不表示目录,或者发生I/O错误,则返回null

因此,当您尝试迭代结果时,结果为null,并发生NullPointerException


这意味着您的IDE的设置与您的命令行不同,例如,它有不同的工作目录。

您应该阅读
File.listFiles的javadoc。抛出NPE的不是listFiles方法,而是您试图在增强的for循环中迭代结果。问题不是空指针,问题是为什么代码在IDE和命令行中的行为不同请看一看:
jar
文件位于
dist
文件夹中,但是IDE中的代码直接从
JambTextProject
执行,至少从您的程序输出的路径来看是这样的:
F:\JambTextProject\Saved Images
F:\JambTextProject\dist\Saved Images
,那么为什么我直接运行代码时没有发生IO错误呢?为什么只有在双击jar或从命令行运行它时才会出现这种情况。谢谢,但我已经知道为什么会出现NullPointerException。实际上,IDE也从命令行运行它的同一个闪存驱动器运行该项目。那么,在这种情况下,工作目录还会有所不同吗
data files is folder: true
data files is file: false
data files: [Ljava.io.File;@a298b7
data folder: F:\JambTextProject\Saved Images
data folder path : F:\JambTextProject\Saved Images
data files is folder: false
data files is file: false
data files: null
data folder: F:\JambTextProject\dist\Saved Images
data folder path : F:\JambTextProject\dist\Saved Images