//In this example there are 3 spaces between "GAME" and "OF" and 2 spaces between "OF" and "Thrones"
String onlyPath = "D:\\GAME OF Thrones";
String selectPath = "/select," + onlyPath;
//START: Strip one SPACE among consecutive spaces
LinkedList<String> list = new LinkedList<>();
StringBuilder sb = new StringBuilder();
boolean flag = true;
for (int i = 0; i < selectPath.length(); i++) {
if (i == 0) {
sb.append(selectPath.charAt(i));
continue;
}
if (selectPath.charAt(i) == ' ' && flag) {
list.add(sb.toString());
sb.setLength(0);
flag = false;
continue;
}
if (!flag && selectPath.charAt(i) != ' ') {
flag = true;
}
sb.append(selectPath.charAt(i));
}
list.add(sb.toString());
list.addFirst("explorer.exe");
//END: Strip one SPACE among consecutive spaces
//Output List
for (String s : list) {
System.out.println("string:"+s);
}
/*output of above loop
string:explorer.exe
string:/select,D:\GAME
string: OF
string: Thrones
*/
//Open in Explorer and Highlight
Process p = new ProcessBuilder(list).start();
8条答案
按热度按时间v09wglhw1#
下面是上面的简短版本。
uyto3xhc2#
正确的
ProcessBuilder
代码实际如下:请注意,您需要在
/select,
之后启动一个新命令,否则它将打开Documents
文件夹。neskvpey3#
用途:
Runtime.getRuntime().exec("explorer.exe /select," + path);
如果
PATH
中有空格,这也有效。jchrr9hc4#
编辑:
从java9开始,桌面API中现在有一个方法来选择文件
编辑:
不能使用java Desktop API突出显示特定文件。
对原始问题的答复:
Desktop API将允许您使用以下代码段来执行此操作:
上面使用的代码的文档位于以下链接:http://docs.oracle.com/javase/10/docs/api/java/awt/Desktop.html和http://docs.oracle.com/javase/10/docs/api/java/io/File.html
在Windows计算机上,这将打开默认的文件资源管理器,在其他系统上,它将分别打开其默认的资源管理器。
或者,您可以使用新的API来构建所需的路径,然后调用返回相应File对象的方法。
为了简洁起见,我排除了检查代码,以确保Desktop和File对象存在。
fwzugrvs5#
桌面API不支持此操作。您将不得不使用
ProcessBuilder
(或者Runtime.exec()
)来执行资源管理器。exe显式with the options you want。这将只适用于windows虽然,如果你想运行在另一个操作系统,你将不得不使用桌面API无论如何。yvgpqqbh6#
我们可以从命令行打开一个特定的路径:
在java中有两种方法可以使用特定的路径打开windows资源管理器:
1.使用Process类(已回答),但使用start命令
1.使用Desktop类
5jdjgkvh7#
总是使用“\”而不是“/”,否则只有浏览器将打开,更多阅读此-Command-line switches that you can use to open the GUI Windows Explorer (Explorer.exe)
使用Windows CLI:
Java源代码:这里变量filePaths是一个
ArrayList<String>
,包含一个文件夹所有文件的路径。它为我工作,希望它对你有帮助!
3htmauhk8#
即使文件/文件夹名称在单词之间有多个空格,这也有效。