检查文件夹是否为空而没有参考问题

时间:2014-07-30 18:09:27

标签: java dereference

下面的代码对从目录中读取的文件数组进行排序。唯一的问题是如果文件夹是空的,那么我得到一个空指针异常。我已经尝试了几种不同的方法,首先检查文件夹是否为空,然后执行下面的代码,但是他们都使用if语句使这段代码超出范围。有没有办法可以检查目录是否为空以及是否跳过此代码?

//sort array listOfFiles by time (oldest to newest)
    File folder = new File(dbBackupLocation + "/" + dbHost);
    File[] listOfFiles = folder.listFiles();
    Arrays.sort(listOfFiles, new Comparator<File>() {
        @Override
                    public int compare(File f1, File f2) {
            return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
        }
    });

编辑:第Arrays.sort(listOfFiles, new Comparator<File>() {

上的NullPointerException

我使用了Elliott Frisch代码:

File folder = new File(dbBackupLocation + "/" + dbHost);
    File[] listOfFiles = folder.listFiles();
    if (listOfFiles != null && listOfFiles.length > 0) {
        // The array isn't empty.
        Arrays.sort(listOfFiles, new Comparator<File>() {
            @Override
            public int compare(File f1, File f2) {
                return Long.valueOf(f1.lastModified())
                        .compareTo(f2.lastModified());
            }
        });
    }

但是当我尝试使用listOfFiles时:for(File s : listOfFiles) { i++; }我显然是在取消引用它?

3 个答案:

答案 0 :(得分:3)

如果我理解你,你需要像

这样的东西
File folder = new File(dbBackupLocation + "/" + dbHost);
File[] listOfFiles = folder.listFiles();
if (listOfFiles != null && listOfFiles.length > 0) {
  // The array isn't empty.
  Arrays.sort(listOfFiles, new Comparator<File>() {
    @Override
    public int compare(File f1, File f2) {
      return Long.valueOf(f1.lastModified())
          .compareTo(f2.lastModified());
    }
  });
}

答案 1 :(得分:0)

通过命令检查文件夹大小:

Runtime.getRuntime().exec("/bin/bash -c du /path/to/Michaels/folder");

'du'linux命令用于查找目录的大小。

如果您有任何疑问,请与我们联系!

答案 2 :(得分:0)

检查文件夹是否存在以及文件夹是否存在。然后检查listOfFiles的大小:

File folder = new File(dbBackupLocation + "/" + dbHost);
if (folder != null && folder.exists() && folder.isDirectory()) {
    File[] listOfFiles = folder.listFiles();
    if (listOfFiles != null && listOfFiles.length > 0) {
        Arrays.sort(listOfFiles, new Comparator<File>() {
            @Override
            public int compare(File f1, File f2) {
                return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
            }
        });
    }

    //display the files
    for (File f : listOfFiles) {
        System.out.println(f);
    }
}