A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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]);   //此处为什么会报错呢
                        }
                }
        }
}
//如果这种方法不可以,那么怎么样才能删除指定目录下中指定后缀名的文件?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 褚代江 于 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方法
                     }
                }
        }
   

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 褚代江 于 2012-5-4 22:17 编辑

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



好吧,变成纯文本就行了
哎,他自动斜体了,太智能了把
回复 使用道具 举报
任睦强 来自手机 高级黑马 2012-5-4 23:12:43
板凳
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();  //这样就行了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
不知道楼主是不是要删除目录下所有的.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);
        
         }
}
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马