// 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中的路径也曾经发生过同样的问题。现在好像可以了,不知道
是用什么方法修复的。兴许可以解决??

解决方案 »

  1.   

    其实这问题一早就存在了。 在windows中支持长文件名,但是dos不支持,所以在dos中用dir时会出现myDocume~1的文件夹。
    楼主用这个文件夹的名字就可以了。即是使用“在dos查看长文件夹名显示的名字”即可。例如Program Files改为Progra~1
      

  2.   

    再问congliu(取次花丛都不顾,半缘修道半缘君。) 如果是本地路径如何处理呢??
    //Hello.txt
    应为这次做的这个应用程序要移植,不能硬编码路径,那用户要是把文件放在有空格的文件夹下
    ,怎么办呢?
      

  3.   

    可以考虑用别的方式来打开文件
    如WinExec等
      

  4.   

    用WinExec是Windows的API??
    那么要用JDI来实现本地调用。
    今天写了一个例子,最后用
    javah得到了java对应的C头文件
    还要做一个动态链接库才成。
    再看看,实在不行,用这个方法
    试试。:)
      

  5.   

    本地路径就是  .//hello.txt
      

  6.   

    试试这样行不行
    String[] cmdArray = new String[] {"notepad", "C:\\Program Files\\Hello.txt"};
    Runtime.getRuntime().exec(cmdArray);
      

  7.   

    不能光说不练,我亲自试了一下,在我的机器上没有任何问题
    我甚至用了很长的    String command = "notepad D:\\Documents and Settings\\Administrator\\My Documents\\My eBooks\\Hello.txt";
    都照样可以打开,不存在什么问题。??
      

  8.   

    试了一下,最近都没有问题了。散分。
    大概用Tomcat的时候被路径搞糊涂了。
    遇到路径问题就有抵触感。 :)