Java中Runtime.exec调用explorer.exe遇连续空格路径失效问题
解决Runtime.exec调用explorer.exe处理含连续空格路径的问题
问题根源在于Runtime.getRuntime().exec(String command)的参数解析机制:它会按空格拆分命令字符串,当路径包含连续空格时,这种拆分逻辑会破坏路径的完整性,导致explorer无法识别目标路径,转而打开默认的「我的文档」。而CMD直接执行时的参数解析逻辑与Java的不同,所以能正常工作。
解决方案1:使用参数数组形式的exec重载方法
将命令和参数拆分为独立的数组元素传递,避免字符串拆分错误:
String path = "C:\\Prueba doble espacio\\"; Process process = Runtime.getRuntime().exec(new String[]{ "explorer.exe", "/root,\"" + path + "\"" });
也可以尝试省略路径外的引号,因为参数数组传递时每个元素会被当作完整参数,explorer能正确识别带空格的路径:
String path = "C:\\Prueba doble espacio\\"; Process process = Runtime.getRuntime().exec(new String[]{ "explorer.exe", "/root," + path });
解决方案2:使用ProcessBuilder(推荐)
ProcessBuilder的参数处理更直观可靠,是Java启动外部进程的推荐方式:
String path = "C:\\Prueba doble espacio\\"; ProcessBuilder pb = new ProcessBuilder("explorer.exe", "/root," + path); pb.start();
内容的提问来源于stack exchange,提问作者Achlys
相关产品推荐
相关产品推荐

