精华内容
下载资源
问答
  • import java.io.File; import java.io.IOException; /** * @Auther: YeJunli * @Date: 2021/8/27 - 08 - 27 - 9:55 * @Description: * @version: 1.0 */ public class IOStreamFileDelete04 { public static ...
    package com.itheima.io_stream;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
     * @Auther: YeJunli
     * @Date: 2021/8/27 - 08 - 27 - 9:55
     * @Description:
     * @version: 1.0
     */
    public class IOStreamFileDelete04 {
        public static void main(String[] args) throws IOException {
            //练习二: 删除一个多级文件夹
            // delete方法
            //只能删除文件和文件夹.
            // 如果现在要删除一个有内容的文件夹
            // 先删掉这个文件夹里面的所有的内容
            // 最后再删除这个文件夹
    
            //创建一个File对象
            File dir = new File("E:\\FileDeleteTest");
    
    
            //调用删除方法
            deleteFile(dir);
        }
    
        //删除File对象中抽象的路径方法
        private static void deleteFile(File dir) {
    
            //将file封装的路径下对象转换为数组
            File[] files = dir.listFiles();
    
            //判断这个数组为不为空,如果不为空,就执行内部代码
            if (files != null) {
    
                for (File file : files) {
    
                    //判断是否为文件
                    if (file.isFile()) {
    
                        //如果为文件,执行删除
                        file.delete();
    
                    } else {
                        //如果不为文件,就(递归)进入这个文件夹,删除文件
                        deleteFile(file);
                    }
                }
    
                //删除全部文件后删除空文件夹,最后删除自己
                dir.delete();
            }
        }
    }
    

    展开全文
  • 如果文件夹下面有子文件夹或文件,可能子文件夹下面还有文件或者文件夹的话,这样直接是删不掉的,什么意思呢,我查遍java file的api,当文件夹下面还存在文件时,并没有直接提供方法删除。为了省事,刚才随便百度了...

    经常写代码,应该能遇到这样一个问题,需要用java删除某个文件夹,如果文件夹下面有子文件夹或文件,可能子文件夹下面还有文件或者文件夹的话,这样直接是删不掉的,什么意思呢,我查遍java file的api,当文件夹下面还存在文件时,并没有直接提供方法删除。为了省事,刚才随便百度了一个,代码比较长,由于我需要删除的子文件夹中存在以“.”开头的文件,于是并不能删除。最后静下来自己写了一个,总共代码就十行左右,但是和一般人的思路都不太一样。

    private void deleteFile(String fileName){

    File file = new File(fileName);

    if(file.exists()){

    file.delete();

    }

    if(file.exists()){

    String[] paths = file.list();

    for(String str:paths){

    deleteFile(fileName+"\\"+str);

    }

    file.delete();

    }

    }

    这样确实解决了问题,但是细想下,里面还是有些问题的,java不让删除有子文件的文件夹,估计也是为了安全考虑,没有任何提示,一旦删除,那就真没了。那我们来稍微修改下代码:

    private void deleteFile(String fileName,boolean isForceDelete){

    File file = new File(fileName);

    if(file.exists()){

    file.delete();

    }

    if(file.exists()){

    if(!isForceDelete){

    return;

    }

    String[] paths = file.list();

    for(String str:paths){

    deleteFile(fileName+"\\"+str,isForceDelete);

    }

    file.delete();

    }

    }

    传这样一个参数,是否强制删除,如果文件夹下面还是文件夹,那就不删除,只要传一个boolean型的参数false就解决了问题。

    看到这,本以为解决了问题,其实还没有,你知道递归的执行效率很低,并且对资源的占用情况随着任务规模的扩大,对资源的占用将呈几何式增长么,你想一下,如果目标文件夹下面存在大量的层级比较深的文件和文件夹时,这时候的执行效率是比较低的,而且很占资源。一旦你选择了递归算法,我觉得执行效率没啥改变了,但是资源占用方面可以有所改变,因此可以从这方面考虑下。这时候不用疑惑,java的GC线程虽然是实时的在检测着,但是一旦系统规模大了,难免有些照应不过了,因此有些垃圾对象可能会删除的有点迟,这里可以查一下,gc回收垃圾的机制有一种是查询对象是否还有被引用,一旦没有被引用,则立即启用回收,准备回收,于是我们可以稍微再改下代码:

    private void deleteFile(String fileName,boolean isForceDelete){

    File file = new File(fileName);

    if(file.exists()){

    file.delete();

    }

    if(file.exists()){

    if(!isForceDelete){

    return;

    }

    String[] paths = file.list();

    for(String str:paths){

    deleteFile(fileName+"\\"+str,isForceDelete);

    }

    file.delete();

    paths = null;// lets gc do its works

    }

    file = null;// lets gc do its works

    }

    这样问题应该彻底解决了,虽然我也只是一名菜鸟,但是平时就应该用这样的标准要求自己,平时多研究下,随着经验的积累,总一天别人也会叫你"大牛"、"*哥",至于lets gc do its works 这样的注释写法源于java 源码,java源码都是开放的,建议大家没事多研究下java源码,里面有很多经典的代码。

    展开全文
  • 红色圈里的注释说了,如果目标路径是个文件夹,那必须保证是个空的文件夹才能删除成功,所以说,如果文件夹下存在文件的话得先删除文件,然后再删除文件夹。 正确的删除操作如下:(递归删除) /** * 递归删除子...

    File在执行delete删除操作的时候,会存在删除不成功的情况出现,so我们看一下源码:
    File源码注释
    红色圈里的注释说了,如果目标路径是个文件夹,那必须保证是个空的文件夹才能删除成功,所以说,如果文件夹下存在文件的话得先删除文件,然后再删除文件夹。

    正确的删除操作如下:(递归删除)

     /**
         * 递归删除子文件
         * @param path 文件路径
         */
        public static void deleteFile(String path) {
            File file = new File(path);
            if (file.exists()) {
                if (file.isDirectory()) {
                    File[] temp = file.listFiles(); //获取该文件夹下的所有文件
                    for (File value : temp) {
                        deleteFile(value.getAbsolutePath());
                    }
                } else {
                    file.delete(); //删除子文件
                }
                file.delete(); //删除文件夹
            }
        }
    

    OK 打完收工~

    展开全文
  • 使用File删除文件夹

    2020-10-06 09:50:08
    删除一个文件夹文件夹中还包含其他文件夹) 使用File类和递归方法 public static void main(String[] args) { //删除一个文件夹文件夹中还包含其他文件夹File file = new File("d:\\zz"); deleteAllFiles...

    删除一个文件夹(文件夹中还包含其他文件夹)

    使用File类和递归方法

    public static void main(String[] args) {
        //删除一个文件夹(文件夹中还包含其他文件夹)
        File file = new File("d:\\zz");
        deleteAllFiles(file);
    }
    public static void deleteAllFiles(File file){
        //通过file对象获取File数组
        File[] listFiles = file.listFiles();
        for (File f : listFiles) {
            //测试此抽象路径名表示的文件是否是一个标准文件。
            if (f.isFile()){
                //是文件就删除
                f.delete();
            }else{
                //是一个文件夹,递归删除里面的文件
                deleteAllFiles(f);
                //最后删除文件夹
                f.delete();
            }
        }
        //循环结束后只剩最后一个空文件夹,删除
        file.delete();
    }
    展开全文
  • boolean delete() 删除此抽象路径名表示... ②:不为空:删不掉 (需要先删除文件夹里面所有文件,再删除文件夹) ③:不存在直接返回false注意:delete方法 ==》直接从磁盘中删除,不能像回收站一样可以恢复!!...
  • 该类主要用于文件和目录的创建、文件的查找和文件的删除等。 有以下四种方法构建一个File对象: File(File parent,String child):以父抽象路径名和子路径名字符串创建新的File实例。 File(String pathName):给定...
  • C#删除文件夹及内容

    2015-11-21 10:42:50
    删除obj和bin文件夹及下面的所有文件,或者删除选中的文件夹及下面的所有文件。
  • 下面小编就为大家带来一篇java 删除文件夹中的所有内容而不删除文件夹本身的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java中通过File类方法删除指定文件夹下的全部文件

    千次阅读 热门讨论 2021-01-05 19:07:45
    Java中通过File类方法删除指定文件夹下的全部文件 对delete的解说 那么问题来了!!! (②中的问题,怎么删除文件夹里所有文件,想必很多同学也和我一样懵,) 别着急(往下看) 要用到的方法 (递归思想) 如果文件夹...
  • File 删除 创建文件夹

    2021-03-07 21:56:48
    //创建文件夹String path="/Users/mc/Downloads/qrcode/";File dirFile=new File(path);if(!dirFile.exists()) {dirFile.mkdir();}//删除文件String path="/Users/mc/Downloads/qrcode/";String[] tempList = file1....
  • java 删除指定文件夹下所有文件,使用例子 DeleteFile.delAllFile(path); path的值是D:/profile/123/
  • 建议千万不要删除硬盘上面有用的文件夹哦 • * 方法思路 • * 循环+递归 • */ • import java.io.File; • • public class RemoveDir { • • public static void main(String[] args) {...
  • 主要介绍了C#删除只读文件或文件夹(解决File.Delete无法删除文件),需要的朋友可以参考下
  • android 删除文件夹文件夹下面的所有文件
  • 为您提供Advanced File Lock 文件夹加密软件下载,Advanced File Lock是一款文件夹加密软件,用户通过该软件可以文件或者文件夹实施加密,加密后再次打开文件就需要输入密码,可以有效的保护用户隐私安全。...
  • Java code/*** 删除文件夹* @param filePathAndName String 文件夹路径及名称 如c:/fqf* @param fileContent String* @return boolean*/public void delFolder(String folderPath) {try {delAllFile(folderPath);...
  • File创建文件,文件夹

    2021-01-27 19:59:35
    File类的构造方法 File(String pathName)根据路径找到...只创建一个文件夹 boolean mkdirs();可以多个创建 import java.io.File; public class FT { public static void main(String[] args) throws Exception { //
  • File类(操作目录文件)构造方法:Filefile=new File("adfsdg\D:\\java.txt");(可以构造一个抽象的目录不确定存不存在!); File a=newFilefile1,"java.txt"); File file1=newFile(a,&...
  • Java 删除文件夹文件夹里所有内容

    千次阅读 2019-01-18 11:10:53
    /*** * 删除文件夹 * * @param folderPath文件夹完整绝对路径 */ public static void delFolder(String folderPath) { try { delAllFile(folderPath); // 删除完里面所有内容 ...
  • 如果 "D:/defonds/temp"...使用以下的方法可以成功删除非空文件夹: [java] view plain copy   //递归删除文件夹   private void deleteFile(File file) {   if (file.e...
  • 删除多级目录 必须保证先删除文件 再删除空的文件夹 //删除 E盘itcast文件夹下所有内容 File ff = new File("E:\\itcast"); delectFile(ff); private static void delectFile(File ff) { //遍历itcast下所所有...
  • packagetest;importjava.io.FileNotFoundException;importjava.io.IOException;...public classDelFile {/*** 删除某个文件夹下的所有文件夹和文件**@paramdelpath* String*@throwsFileNotFoundException*...
  • java 删除文件夹内指定前缀名字的所有文件 自己写的可以用
  • boolean createNewFile(),只能创建文件,不能创建文件夹存在的路径创建一个新的文件 代码演示(这边是方法!) private static void show01() throws IOException { File f1 = new File("E:\\xpu\\ideaproject\\...
  • File.delete()删除文件夹失败

    千次阅读 2019-05-10 13:01:58
    使用xxFile.delete()删除文件夹失败 分析 该文件夹不是空文件夹,上述方法不能删除 解决方案 方法很多,这里采用了 一个简单的方法 使用commons.io组件中的**FileUtils.deleteDirectory()**方法 ...
  • 通过jdk1.7的Files.walkFileTree实现遍历文件树的原理实现,删除文件夹下所有的文件,先把文件删除再把上级文件夹删除。实现代码:package xxx.nio;import java.io.IOException;import java.nio.file....
  • Java删除文件夹和文件

    2021-03-05 14:55:36
    //删除文件夹下的所有文件(包括子目录) File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { //删除子文件 if (files[i].isFile()) { flag = deleteFile(files[i]....
  • 实现删除某个目录删除及该目录里面所有的子文件和文件夹的功能整体思路:文件存在是文件 --直接调用delete删除文件夹--接收文件夹file实例并遍历调用自身递归判断删除文件夹importjava.io.File;/*** @author ...
  • import java.io.File;public class deleDemo {public static void main(String[] args) {demo(new File("D:\\javaTest"));//demo2(new File("D:\\javaTest"));}/*方式1*/public static void demo(File f){//传一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 393,982
精华内容 157,592
关键字:

file删除文件夹