我要执行Runtime.getRuntime().exec(rm /cson/New/*.*)
但是执行不成功,如果执行Runtime.getRuntime().exec(rm /cson/New/a.txt)就能成功,命令不识别*号吗?该怎么办啊?我New下面好几千个文件,不可能一个一个删吧?

解决方案 »

  1.   

    我直接在服务器上rm /cson/New/*.* 都是可以的。。当然支持通配符了,我怀疑是Runtime.getRuntime().exec()不支持
      

  2.   

    *.*是DOS通配符,是WINDOWS这边的技术范畴的,但是你显然是要对UNIX、LINUX的文件系统进行操作。你要是都删除,
    就用Java的API,File.listFiles().然后递归删除。
      

  3.   

    对啊。。我直接在linux服务器上用*.*删除都可以的,要是linux不支持,那我直接在linux服务器上运行rm /cson/New/*.* 就不会成功,但是是成功的,说明linux支持*通配符
      

  4.   

    这样调用就是会有删不掉的情况。
    不清楚为什么。
    我上次做了一个用C调用shell的功能,
    也是实现删除一个文件夹下所有的文件,
    用*是不行的。
    最后还是遍历了文件夹下的所有文件,一个一个删除的。
    for FILENAME in $(ls -t -r *.xml 2>/dev/null) ; do
        if [ -f $FILENAME ] ; then
    sudo /bin/rm -f $FILENAME
        fi    unset FILENAME
    done
      

  5.   

    直接用Java代码删除也是非常Easy的。
      

  6.   

    LZ可以试试这个,
    rm -rf /cson/New/*.*
      

  7.   

    星号在java里面是有特殊含义的,用转意试试看。Runtime.getRuntime().exec("rm /cson/New/\*.\*")
      

  8.   

    找到原因了。
    原因是采用通佩符的话,系统会问你是否需要删除。
    在这里,改成Runtime.getRuntime().exec(rm /cson/New/*.* -f)强制删除,不需要询问就可以了。 
      

  9.   

    Runtime.getRuntime().exec(rm -f /cson/New/*.*) 
      

  10.   

    看看我这个
    package com.dos;public class DosTest{

    public static void main(String [] args){
    try{
    Process process=Runtime.getRuntime().exec("p.exe");
    process.waitFor();
    System.out.println("DOS Sucess");
    }catch(Exception e){
    e.printStackTrace();
    }

    }} 
      

  11.   

    请给命令行参数都加上双引号
    Runtime.getRuntime().exec("rm \"/cson/New/*.*\"")