java目录删除_java删除文件及目录[通俗易懂]

java目录删除_java删除文件及目录[通俗易懂]java中删除目录事先要删除目录下的文件或子目录。用递归就可以实现。publicvoiddel(Stringfilepath)throwsIOException{Filef=newFile(filepath);//定义文件路径if(f.exists()&&f.isDirectory()){//判断是文件还是目录if(f.listFiles().length==…

大家好,又见面了,我是你们的朋友全栈君。

java中删除目录事先要删除目录下的文件或子目录。用递归就可以实现。

public void del(String filepath) throws IOException{

File f = new File(filepath);//定义文件路径

if(f.exists() && f.isDirectory()){//判断是文件还是目录

if(f.listFiles().length==0){//若目录下没有文件则直接删除

f.delete();

}else{//若有则把文件放进数组,并判断是否有下级目录

File delFile[]=f.listFiles();

int i =f.listFiles().length;

for(int j=0;j

if(delFile[j].isDirectory()){

del(delFile[j].getAbsolutePath());//递归调用del方法并取得子目录路径

}

delFile[j].delete();//删除文件

}

}

del(filepath);//递归调用

}

}

—————————————————————————————————————-

删除一个非空目录并不是简单地创建一个文件对象,然后再调用delete()就可以完成的。要在平台无关的方式下安全地删除一个非空目录,你还需要一个算法。该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录。

只要简单地在目录中循环查找文件,再调用delete就可以清除目录中的所有文件:

static public void emptyDirectory(File directory) {

File[ ] entries = directory.listFiles( );

for(int i=0; i

entries[i].delete( );

}

}

这个简单的方法也可以用来删除整个目录结构。当在循环中遇到一个目录时它就递归调用deleteDirectory,而且它也会检查传入的参数是否是一个真正的目录。最后,它将删除作为参数传入的整个目录。

static public void deleteDirectory(File dir) throws IOException {

if( (dir == null) || !dir.isDirectory) {

throw new IllegalArgumentException(

“Argument “+dir+” is not a directory. “

);

}

File[ ] entries = dir.listFiles( );

int sz = entries.length;

for(int i=0; i

if(entries[i].isDirectory( )) {

deleteDirectory(entries[i]);

} else {

entries[i].delete( );

}

}

dir.delete();

}

在Java 1.1以及一些J2ME/PersonalJava的变种中没有File.listFiles方法。所以只能用File.list,它的返回值一个字符串数组,你要为每个字符串构造一个新的文件对象。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135280.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ftp lftp vsftp区别_vsftp

    ftp lftp vsftp区别_vsftp服务配置文件:FTP(文件传输协议)。类型:SystemV管理的服务。包:vsftpd。进程:/usr/sbin/vsftpd。脚本:/etc/init.d/vsftpd。端口:21(ftp),20(ftp数据)。配置:/etc/vsftpd/vsftpd.conf/etc/vsftpd/ftpusers/etc/pam.d/vsftpd。日志:/var/log/xferlog。与之…

    2022年9月25日
    3
  • dialog使用案例,包含增加按钮关闭弹窗

    dialog使用案例,包含增加按钮关闭弹窗

    2021年7月20日
    65
  • RapidXML的读写

    RapidXML的读写把如下图几个文件放到工程目录(hpp文件)新建工程进行读写测试,代码如下://ConsoleApplication1.cpp:定义控制台应用程序的入口点。//#include”stdafx.h”#include”rapidxml.hpp”#include”rapidxml_utils.hpp”//rapidxml::file#include”rapidx…

    2022年7月17日
    12
  • qtabwidget切换tab_qt tablewidget

    qtabwidget切换tab_qt tablewidget0.实现效果(声明:这只是个测试,不是很满意,放着也没用就分享下)实现效果GIF:完整代码链接:https://github.com/gongjianbo/MyTestCode/tree/master/Qt/MyTabWidget相关参考:https://www.cnblogs.com/findumars/p/5175984.html相关参考:https://github.com/MRXY001/Qt-DragableTabWidget1.实现过程QTabWidget的Tab

    2022年9月23日
    3
  • 多进程文件锁

    多进程文件锁一、多进程文件锁当多个用户共同使用、操作一个文件的情况下,这时,Linux通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态1.文件锁方式对当前读写文件进行加锁处理,简单说下两种加锁方式:flock():文件级别的锁,针对整个文件进行加锁。flock用于对文件施加建议性锁。fcntl()函数:段级别的锁,能够针对文件的某个部分进行加锁。而fcntl不仅可以施

    2022年6月28日
    28
  • LeetCode[5]-最长回文子串_leetcode 合并区间

    LeetCode[5]-最长回文子串_leetcode 合并区间给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = “aab”输出:[[“a”,”a”,”b”],[“aa”,”b”]]示例 2:输入:s = “a”输出:[[“a”]] 提示:1 <= s.length <= 16s 仅由小写英文字母组成题解暴搜class Solution {public: vector<vector<st

    2022年8月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号