Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 目录和文件存在时“尝试获取空数组的长度”-刷新安装_Java_Arrays - Fatal编程技术网

Java 目录和文件存在时“尝试获取空数组的长度”-刷新安装

Java 目录和文件存在时“尝试获取空数组的长度”-刷新安装,java,arrays,Java,Arrays,我的部分代码对文件进行排序并读取其名称: FileFilter fileFilter = new WildcardFileFilter("*.csv"); File[] files = directory.listFiles(fileFilter); Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE); 当目录不存在时进行新安装-应用程序创建目录+一些空文件,一切正常 当我删除应用程序后再次尝试安装该应用程序,

我的部分代码对文件进行排序并读取其名称:

FileFilter fileFilter = new WildcardFileFilter("*.csv");
File[] files = directory.listFiles(fileFilter);
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
当目录不存在时进行新安装-应用程序创建目录+一些空文件,一切正常

当我删除应用程序后再次尝试安装该应用程序,但仍保留包含文件的目录时,就会出现问题。应用程序在启动时抛出错误,仅在删除目录后启动

看起来应用程序无法读取现有文件,尽管在清单中授予了权限。但是当我删除这些文件并让应用程序再次创建它们时,它就工作了。即使我将一些传统文件粘贴到目录中,它也能工作


我做错了什么?

关于您的实际问题,您给我们的信息很少。但是listFiles方法很可能返回null。有关返回值的文档请参见:

一个抽象路径名数组,表示中的文件和目录 此抽象路径名表示的目录。阵列将被删除 如果目录为空,则为空。如果此摘要为空,则返回null 路径名不表示目录,或者如果发生I/O错误


您应该验证代码中的目录是否存在,并可能创建它,或者如果不存在,干脆不读取它。

我做错了什么很难说,因为您只与我们共享了不相关的代码;是完整的代码;请共享异常的堆栈跟踪。不要假设WildcardFileFilter确切知道.csv文件的位置。必须是路径特定的。错误是什么?问题是目录和文件存在,而listFiles返回null。当它没有-应用程序创建它,问题就消失了。但是我想读取现有的文件。如果要检查directory.exists,可以使用directory.isDirectory检查文件是否实际上是一个目录而不是一个文件,在这种情况下,它也会返回null。如果仍然失败,试着自己创建目录,看看它是否能正常工作。仍然有可能生成目录的内容会影响某些权限设置。