// file ExecDemoSimple.javapublic class ExecDemoSimple { public static void main(String av[]) throws java.io.IOException { String command = "notepad C:\\Hello.txt";
Runtime.getRuntime().exec(command); }}
这段代码可以打开C:盘根下自己建立的一个Hello.txt文件。
但是如果C:\\Program Files\\Hello.txt"
就不行了,原因是exec函数内部用StringTokenizer来实现参数分解
但是对于路径中有空格的情况,怎么解决呢。
而且如果用相对路径 "notepad \\Hello.txt"
如果当前目录路径中有空格,也打不开,
如果没有空格,则可以运行。对于这个怎么解决呢???Tomcat中的路径也曾经发生过同样的问题。现在好像可以了,不知道
是用什么方法修复的。兴许可以解决??
Runtime.getRuntime().exec(command); }}
这段代码可以打开C:盘根下自己建立的一个Hello.txt文件。
但是如果C:\\Program Files\\Hello.txt"
就不行了,原因是exec函数内部用StringTokenizer来实现参数分解
但是对于路径中有空格的情况,怎么解决呢。
而且如果用相对路径 "notepad \\Hello.txt"
如果当前目录路径中有空格,也打不开,
如果没有空格,则可以运行。对于这个怎么解决呢???Tomcat中的路径也曾经发生过同样的问题。现在好像可以了,不知道
是用什么方法修复的。兴许可以解决??
楼主用这个文件夹的名字就可以了。即是使用“在dos查看长文件夹名显示的名字”即可。例如Program Files改为Progra~1
//Hello.txt
应为这次做的这个应用程序要移植,不能硬编码路径,那用户要是把文件放在有空格的文件夹下
,怎么办呢?
如WinExec等
那么要用JDI来实现本地调用。
今天写了一个例子,最后用
javah得到了java对应的C头文件
还要做一个动态链接库才成。
再看看,实在不行,用这个方法
试试。:)
String[] cmdArray = new String[] {"notepad", "C:\\Program Files\\Hello.txt"};
Runtime.getRuntime().exec(cmdArray);
我甚至用了很长的 String command = "notepad D:\\Documents and Settings\\Administrator\\My Documents\\My eBooks\\Hello.txt";
都照样可以打开,不存在什么问题。??
大概用Tomcat的时候被路径搞糊涂了。
遇到路径问题就有抵触感。 :)