java.io.File 的 listFiles 方法抛出 NullPointerException
listFiles method of java.io.File throws NullPointerException
我正在 运行 使用此代码,它在 NetBeans IDE 中运行良好,但是一旦我构建了 JAR 文件并通过单击 运行 它,它就崩溃并抛出一个 NullPointerException
String sepChar = File.separator;
File homeFolder = new File(System.getProperty("user.dir"));
File dataFolder = new File(homeFolder.getAbsolutePath() + sepChar + "Saved Images");
System.err.println("data files is folder: "+dataFolder.isDirectory());
System.err.println("data files is file: "+dataFolder.isFile());
System.err.println("data files: "+dataFolder.listFiles());
System.err.println("data folder: "+dataFolder);
System.err.println("data folder path : "+dataFolder.getAbsolutePath());
File[]files = dataFolder.listFiles();
for(File f:files){...}
此代码在 for(File 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
命令行输出(通过运行ning java -jar jarName.jar获得):
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
那会是什么呢?
为什么代码 运行 在 IDE 中运行良好,但从 jar 中取出 运行 时却崩溃了?
闪存驱动器有 391 MB 可用空间 space,要访问的文件夹大小为 163 MB,而其在磁盘上的大小为 292 MB
根据File.listFiles
的javadoc,方法:
Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.
因此,当您尝试迭代结果时,结果为 null,并发生 NullPointerException。
这意味着您的 IDE 设置与您的命令行不同,例如它有一个不同的工作目录。
我正在 运行 使用此代码,它在 NetBeans IDE 中运行良好,但是一旦我构建了 JAR 文件并通过单击 运行 它,它就崩溃并抛出一个 NullPointerException
String sepChar = File.separator;
File homeFolder = new File(System.getProperty("user.dir"));
File dataFolder = new File(homeFolder.getAbsolutePath() + sepChar + "Saved Images");
System.err.println("data files is folder: "+dataFolder.isDirectory());
System.err.println("data files is file: "+dataFolder.isFile());
System.err.println("data files: "+dataFolder.listFiles());
System.err.println("data folder: "+dataFolder);
System.err.println("data folder path : "+dataFolder.getAbsolutePath());
File[]files = dataFolder.listFiles();
for(File f:files){...}
此代码在 for(File 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
命令行输出(通过运行ning java -jar jarName.jar获得):
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
那会是什么呢? 为什么代码 运行 在 IDE 中运行良好,但从 jar 中取出 运行 时却崩溃了? 闪存驱动器有 391 MB 可用空间 space,要访问的文件夹大小为 163 MB,而其在磁盘上的大小为 292 MB
根据File.listFiles
的javadoc,方法:
Returns null if this abstract pathname does not denote a directory, or if an I/O error occurs.
因此,当您尝试迭代结果时,结果为 null,并发生 NullPointerException。
这意味着您的 IDE 设置与您的命令行不同,例如它有一个不同的工作目录。