我想在程序中实现直接打开文件功能。使用了下面的代码
 
Runtime.getRuntime().exec("cmd /c start "+filepath)filepath 是文件所在路径。但是当路径中出现空格时,比如:F:\My Documents\K073.pdf 就会出现错误“无法找到文件F:\My”。请问这种情况如何解决?各位大哥别告诉我给文件夹改名啊  o(∩_∩)o...                         

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【gigi09】截止到2008-07-09 15:18:29的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:20                       每贴平均分数:20                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    filePath = "\"" + filePath + "\"";
      

  3.   


    Runtime.getRuntime().exec("cmd /c start \""+filepath+"\"");
      

  4.   

    楼上的各位~~~这个方法我没试验成功~~
    我加上filepath两端的\" 之后确实不提示错误了,但是运行之后只显示一个DOS界面 标题栏是完整的filepath内容,但是系统关联的应用程序没出呀来~现在的情况是:filepath等于 F:\My Documents\K073.pdf 系统提示错误
                  filepath等于 F:\MyDocuments\K073.pdf 一切正常 可以调用PDF阅读器打开
                  filepath等于 \"F:\My Documents\K073.pdf\"  系统不提示错误,但只有DOS窗口
                  filepath等于 \"F:\MyDocuments\K073.pdf\"   还是只有DOS窗口继续求助中~~~~
      

  5.   

    java调用cmd命令。。改天我也试试。。^_^
      

  6.   

    你可以不用start 用explorer 不过这样就不是直接打开文件了。
      

  7.   

    请看START命令的语法:
    START:Start a specified program or command in a separate window.
    Syntax:      
    START "title" [/Dpath] [options] "command" [parameters]从语法看到,第一个字符串参数被当作新打开的CMD窗口的TITLE,所以前面直接在文件路径加引号并没有打开文件,而是只打开一个CMD窗口,可以注意到CMD窗口的标题正是文件的路径名,呵呵。
    解决办法:使用START命令的/Dpath参数选项,如下:String filepath = "\"F:\\My Documents\" K073.pdf";
    Runtime.getRuntime().exec("cmd /c start /D"+filepath); OK,试试看!
      

  8.   

    谢谢楼上的,可惜还是不行~~ 我在网上找到了这个方法:start 后跟一对不包括任何内容的双引号。也就是:
    String filepath = "F:\My Documents\K073.pdf ";
    filepath = "\"" + filepath + "\""; //先给filepath 两端加上引号
    Runtime.getRuntime().exec("cmd /c start "+"\""+"\" "+ filepath); //再给start后面加一对引号
      

  9.   


    用我提供的语句试一下,在我的机器上已经可以打开文件,
    简单点的语句是:
    Runtime.getRuntime().exec(CMD /C START /D"\"F:\\My Documents\" K073.pdf");   //注意目录是用引号引起来的,且跟/D之间没有空格,和文件名之间有一个空格。
      

  10.   


    不知你从哪里查到的:start 后跟一对不包括任何内容的双引号 ??
    你可以在CMD窗口中输入 START /?来看看START命令的语法啊!"title"是用引号引起来的,也就是窗口的标题;/Dpath是指定起始目录的;后面的command/program可以是文件名,会自动调用相关联的应用程序来打开文件,这就是LZ小妹的目的。
      

  11.   

    java调用的时候带空格可以直接把字符串分割开的
    就是在空格的时候分割,好象试过~,就像传几个参数一样的
      

  12.   

    Runtime.getRuntime().exec("cmd /c start \""+filepath+"\"");
      

  13.   

    试了一下你说的方法,理解了,在start后面加一对空引号,意味着设置title参数为空,然后后面的filepath被正确解释文件路径了。
    的确可行,比我的方法更简单,学习了!
      

  14.   

    xie谢谢楼上各位 我也学到了