黑马程序员技术交流社区

标题: File类中删除指定后缀名的文件?为什么不可以呢? [打印本页]

作者: 金肖    时间: 2012-5-4 21:34
标题: File类中删除指定后缀名的文件?为什么不可以呢?
public class DeletFileTest {
        public static void main(String[] args) {
                File f = new File("c:\\a");  //删除c盘下a目录中的.java文件
                deletDemo(f);
        }

        public static void deletDemo(File f) {
                String[] file = f.list();
                for (int i = 0; i < file.length; i++) {
                        if (file[i].endsWith(".java")) {
                                deletDemo(file[i]);   //此处为什么会报错呢
                        }
                }
        }
}
//如果这种方法不可以,那么怎么样才能删除指定目录下中指定后缀名的文件?
作者: 褚代江    时间: 2012-5-4 22:08
本帖最后由 褚代江 于 2012-5-4 22:11 编辑

你这个程序
public static void deletDemo(File f) {
                String[] file = f.list();//这里只是获取到了文件的名字
                for (int i = 0; i < file.length; i++) {
                        if (file.endsWith(".java")) {
                              //  deletDemo(file);  
                                   new  File("c:\\a\\"+file).delete();//这里要从新将文件获取到后再调用delete方法删除
                     }
                }
        }

有种简单的方法是
public static void deletDemo(File f) {
                public static void deletDemo(File f) {
               File files[]=dir.listFiles();//这里得到的是文件对象集合
                for (int i = 0; i < file.length; i++) {
                        if (file.endsWith(".java")) {
                              //  deletDemo(file);  
                                   file.delete();//file是文件对象,所以可以直接使用delete方法
                     }
                }
        }
   

作者: 褚代江    时间: 2012-5-4 22:13
本帖最后由 褚代江 于 2012-5-4 22:17 编辑

奇怪为什么我打出来的file,就变成file了呢,怎么显示不出来哦,改了两次都显示不出来



好吧,变成纯文本就行了
哎,他自动斜体了,太智能了把
作者: 任睦强    时间: 2012-5-4 23:12
public class DeletFileTest {
        public static void main(String[] args) {
                File f = new File("c:\\a");  //删除c盘下a目录中的.java文件
                deletDemo(f);
        }

        public static void deletDemo(File f) {
                String[] file = f.list();
                for (int i = 0; i < file.length; i++) {
                        if (file[i].endsWith(".java"))
                              //  deletDemo(file[i]);                                       换成File f1=new File(“C:   \\a”+file[i]);                               f1.delete();  //这样就行了
作者: 贾联国    时间: 2012-5-4 23:44
不知道楼主是不是要删除目录下所有的.java文件,包括给定目录下文件夹里的.java。
看lz的意思好像要用递归,要递归的话代码是这样的,希望对LZ有帮助!
import java.io.File;


public class DeletFileTest {
    public static void main(String[] args) {
        File f = new File("c:\\a");
        deletDemo(f);
}
    public static void deletDemo(File f) {
        File files[]=f.listFiles();
         for (int i = 0; i < files.length; i++) {
             if(files.isFile())  {  //判断是否是文件,是就删.java      
               if (files.toString().endsWith(".java")) {
                     
                            files.delete();         
                     }
                              
             }      
            else  //else肯定是文件夹,是文件夹就递归      
             deletDemo(files);
        
         }
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2