0

我找到了一个链接http://docs.oracle.com/javase/tutorial/essential/io/dirs.html 与示例:

    Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
    for (Path name: dirs) {
        System.err.println(name);
    }

如果我想用上面的代码从“C://”列出一个文件,你能帮我弄清楚我需要做什么吗?

4

4 回答 4

0

使用纯 Java NIO:

public static void main(final String[] args)
{
    // This will give u all Root Directories. Like: C:, D:, ...
    final Iterable<Path> rootDirs = FileSystems.getDefault().getRootDirectories();

    for (final Path rootDir : rootDirs)
    {
        if (rootDir.startsWith("C:") == false)
            continue;

        // This will loop through every of this root directories
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(rootDir))
        {
            for (final Path file : stream)
            {
                System.out.println(file.getFileName());
            }
        }
        catch (IOException | DirectoryIteratorException x)
        {
            System.err.println(x);
        }
    }

}
于 2013-08-09T15:43:49.393 回答
0

尝试这个

 Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
 for (Path name: dirs) {
     System.err.println(name);
    if("C:\\".equalsIgnoreCase(name.toString())){
        File dir = new File(name.toString());
        for(File file : dir.listFiles())
            System.out.println(file.getName());

    }
  }
 }
于 2013-08-09T15:47:28.980 回答
0

可以使用列出启动 java1.7 的根目录

Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
于 2018-06-14T12:55:27.623 回答
-1

我更喜欢只使用 File 类。

    File[] dirs = File.listRoots();
    for (File name: dirs) {
        if (name.toString().equals("C:\\")){
            String[] cDirs = name.list();
            for (String cDir: cDirs) {
                System.out.println(cDir);
            }
        }
    }

此代码也适用于 Java 1.7 的旧 Java 版本;这是要使用的最低版本FileSystems

于 2013-08-09T15:46:01.500 回答