我一直在寻找一种方法来获取驱动器在Windows上找到的文件(例如C://,E://),但我能想到的最好的是
.getAbsolutePath().getParent().getParent() etc.
我想要的只是第一个字母,例如的 E:
实现这一目标的最佳方式是什么?
答案 0 :(得分:2)
使用路径类,因为java 7,getRoot()方法doc是here
以Path对象的形式返回此路径的根组件,如果是,则返回null 此路径没有根组件。
String dllPathString = "C:\\Program Files\\Notepad++\\scilexer.dll";
Path dllPath = Paths.get(dllPathString);
Path driveLetter = dllPath.getRoot();
System.out.println("The dll is in: " + driveLetter);
答案 1 :(得分:0)
我从来没有看到.getRootPath()
所以我无法告诉你,但对于java.io.File
类型,你将.getAbsolutePath()
将返回一个字符串,然后你保持只有第一个或第一个字符
File file = new File("test.txt");
System.out.println(file.getAbsolutePath().substring(0,2)); // print C:
System.out.println(file.getAbsolutePath().substring(0,1)); // print C
还使用getRoot():
File file = new File("test.txt");
Path path = Paths.get(file.getAbsolutePath()).getRoot();
System.out.println(path); // print C:\
System.out.println(path.toString().substring(0, 1)); // print C
但正如你所说,你只需要字母,你就会用字符串然后保留字母
答案 2 :(得分:0)
listRoots()
是File的静态方法,您可以使用它来查找您计算机的所有目录。
File directories[]=File.listRoots();
for(File directory:directories)
System.out.println(directory);
您的所需输出:
C:\
d:\
E:\
F:\
H:\
修改强>
当且仅当文件系统实际包含由此抽象路径名表示的文件且允许应用程序写入文件时,才能使用返回true的canWirte()
方法。否则就是假的。
在我的情况下,仅对第1,第3和第4个案例目录返回true。