【问题标题】:Java get Files in Folder?Java获取文件夹中的文件?
【发布时间】:2014-04-12 11:33:42
【问题描述】:

我正在尝试获取包含类型的字典中的文件

喜欢:

src/mime.txt

src/pic1.png

                    String path  = "dic images/";
                    for (int i = 0; i < listOfFiles.length; i++) {
                      if (listOfFiles[i].isFile()) {
                        uploadFile(path   + "" + listOfFiles[i].getName());

                      } 
                    }

这对listOfFiles[i].getName() 不起作用,因为我只得到没有类型的“pic1”或者?

【问题讨论】:

  • 因为您打印的只是名称。您甚至看过 Javadocs 吗?
  • 你需要递归调用文件夹
  • 定义“无效”。目录包含什么,你希望这段代码做什么,为什么,它做了什么?
  • 此外,在命令中添加空字符串 ("") 有什么意义???
  • 不能通过文件扩展名来获取文件类型吗?我认为这将是最简单的。

标签: java list file


【解决方案1】:

使用getAbsolutePath 代替getName

试试这个:

File folder = new File("your path");//for example D:/java
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) 
    if (listOfFiles[i].isFile()) {
        System.out.println(listOfFiles[i].getAbsolutePath());
    }

更进一步,如果您还需要打印子文件夹中所有文件的全名,请尝试以下操作:

public static void main(String[] args){//or whatever to call the printFiles for the first time

File folder = new File("D:/java");
printFiles(folder);
}

static void printFiles(File folder) {
    File[] listOfFiles = folder.listFiles();
    for (File f : listOfFiles) { 
        if (f.isFile()) {
            System.out.println(f.getAbsolutePath());
        }
        else
            printFiles(f);
    }
}

【讨论】:

    【解决方案2】:

    使用 NIO.2 你可以做到这一点:

    public void findAllFilesInDirectory(Path pathToDir) throws IOException {
        Files.walkFileTree(pathToDir, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                if (Files.isRegularFile(file)) {
                    System.out.println(file.toString());
                }
                return FileVisitResult.CONTINUE;
            }
        });
    }
    

    这将打印所选目录中所有常规文件的路径。它还打印子目录中的常规文件。

    文档: http://docs.oracle.com/javase/tutorial/essential/io/walk.html

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 2018-07-11
      • 2013-12-25
      • 1970-01-01
      • 2015-05-31
      • 2011-01-03
      • 2011-05-20
      • 2016-11-11
      • 2018-12-14
      相关资源
      最近更新 更多