FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

时间:2022-04-08 00:28:37

2018-11-05  19:42:08开始写


选择

FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有


删除

FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有


1.FileUtils.java类

 import java.io.File;//导入包
import java.util.List;//导入包 public class FileUtils {
// 删除文件夹下所有文件
public static void deleteFiles(File rootFile) { //参数是根文件夹
if (rootFile.listFiles().length == 0) {// 如果用户给定的是空文件夹就退出方法
return;//退出
} else {
File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
for (File file : files) {//使用foreach语句遍历文件数组
if (file.isFile()) {//判断是否为文件
file.delete();// 删除指定文件夹下的所有文件
} else {
if (file.listFiles().length == 0) {//file类型是文件夹且文件夹为空
file.delete();// 删除指定文件夹下的所有空文件夹
} else {
deleteDirectories(file);// 删除指定文件夹下的所有非空文件夹(包括file)
}
}
}
}
} // 删除文件夹及文件夹下所有文件
public static void deleteDirectories(File rootFile) {
if (rootFile.isFile()) {//第一次肯定不是文件类型,因为deleteFiles方法中已经判断过了
rootFile.delete();// 如果给定的File对象是文件就直接删除
} else {// 如果是一个文件夹就将其转换成File数组
File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
for (File file : files) {//使用foreach语句遍历文件数组
deleteDirectories(file);// 如果不是空文件夹则就迭代deleteDictionary()方法
}
rootFile.delete();// 如果是空文件夹就直接删除
}
} // 获得指定目录下的所有文件的路径
public static List<String> getFilePath(List<String> list, File rootFile) {//返回值的就是传入的List<String> list类型,用于输出被删除的文件
File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
for (File file : files) {//使用foreach语句遍历文件数组
if (file.isDirectory()) {//判断是否为文件夹
getFilePath(list, file);//如果是文件夹则就迭代getFilePath()方法
} else {
//添加file的绝对路径添加到list中,在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'
list.add(file.getAbsolutePath().replace("\\", File.separator));
}
}
//返回所有文件路径,我利用自动生成的文件夹程序,然后再删除发现文本域没输出,原来获得的只是文件路径,我花了半小时找题,被自己蠢哭
return list;//文件的路径是文件!文件!文件!
}
}

2.FileDeleteFrame.java类

 import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import java.awt.Font;
import javax.swing.UIManager; //@SuppressWarnings J2SE 提供的一个批注或者注解。
//该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默,
//即忽略这些警告信息。当在可序列化的类上缺少 serialVersionUID 定义时的警告
@SuppressWarnings("serial")
public class FileDeleteFrame extends JFrame {//窗口 private JPanel contentPane;//面板
private JTextField chooseTextField;//选择后显示路径的文本域
private File fileName;//文件类型
private JTextArea resultTextArea;//显示被删除的文件路径的文本域 public static void main(String[] args) {
try {
//Java Swing 非常漂亮的外观Nimbus使用方法
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
FileDeleteFrame frame = new FileDeleteFrame();//实例化FileDeleteFrame
frame.setVisible(true);//可显示窗体
} public FileDeleteFrame() {//无参构造函数
setTitle("\u5220\u9664\u6587\u4EF6\u5939\u4E2D\u6240\u6709\u6587\u4EF6");//Unicode字符集编码
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体方式
setBounds(100, 100, 450, 300);//设置窗体左上角初始位置和宽高
contentPane = new JPanel();//面板
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//外边距
setContentPane(contentPane);//为窗体设置面板
contentPane.setLayout(new BorderLayout(0, 0));//设置布局方式为边界布局方式 JPanel choosePanel = new JPanel();//选择面板
contentPane.add(choosePanel, BorderLayout.NORTH);//加入到contentPane中,且在北方位置 chooseTextField = new JTextField();//实例化,选择后显示路径的文本域
chooseTextField.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
choosePanel.add(chooseTextField);//添加到选择面板
chooseTextField.setColumns(18);//设置最大显示列数 JButton chooseButton = new JButton("\u9009\u62E9\u6587\u4EF6\u5939");//Unicode字符集编码
chooseButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
chooseButton.addActionListener(new ActionListener() {//设置按钮监听事件
public void actionPerformed(ActionEvent arg0) {//重写actionPerformed方法
do_chooseButton_actionPerformed(arg0);//调用自定义处理方法,在下方
}
});
choosePanel.add(chooseButton);//添加到选择面板 JPanel buttonPanel = new JPanel();//删除面板
contentPane.add(buttonPanel, BorderLayout.SOUTH);//加入到contentPane中,且在南方位置 JButton deleteButton = new JButton("\u5F00\u59CB\u5220\u9664");//删除按钮
deleteButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
deleteButton.addActionListener(new ActionListener() {//设置按钮监听事件
public void actionPerformed(ActionEvent arg0) {//重写actionPerformed方法
do_deleteButton_actionPerformed(arg0);//调用自定义处理方法,在下方
}
});
buttonPanel.add(deleteButton);//添加到删除面板 JScrollPane scrollPane = new JScrollPane();//显示被删除的文件路径的滚动面板
contentPane.add(scrollPane, BorderLayout.CENTER);//加入到contentPane中,且在中间位置 resultTextArea = new JTextArea();//显示被删除的文件路径的文本域
resultTextArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
resultTextArea.setText("\u5220\u9664\u4E86\u4EE5\u4E0B\u6587\u4EF6\uFF1A");//使用Unicode字符集编码,设置标题
scrollPane.setViewportView(resultTextArea);//让文本域显示在滚动面板中
} protected void do_chooseButton_actionPerformed(ActionEvent arg0) {//自定义选择按钮事件方法
JFileChooser chooser = new JFileChooser();//文件选择器
chooser.setMultiSelectionEnabled(false);//设置为单选
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//设置为仅文件夹可选 //如果选择打开按钮,这返回JFileChooser.APPROVE_OPTION常量,
//参数是文件选择器的位置窗口的中心位置,如果为null则以屏幕中心位置,如果是组件则以组件所在窗体位置
int result = chooser.showOpenDialog(this.getContentPane());
if (result == JFileChooser.APPROVE_OPTION) {//判断是否为打开
fileName = chooser.getSelectedFile();//获取选择到的文件夹
chooseTextField.setText(fileName.getAbsolutePath());//设置选择文本域信息为文件夹的路径
}
} protected void do_deleteButton_actionPerformed(ActionEvent arg0) {//自定义删除按钮事件方法
try {
List<String> list = new ArrayList<String>();//用于存储被删除的文件路径
FileUtils.getFilePath(list, fileName);//调用删除文件的方法
Iterator<String> iterator = list.iterator();//为list设置迭代器,用于遍历
StringBuilder sb = new StringBuilder();//创建字符串,可实现添加功能
sb.append(resultTextArea.getText() + "\n");//先获取当前删除文本域的信息
while (iterator.hasNext()) {//判断是否有下一个
sb.append(iterator.next());//添加被删除文件的路径
sb.append("\n");//换行
}
resultTextArea.setText(sb.toString());//一口气输出到删除信息文本域
FileUtils.deleteFiles(fileName);//最后调用删除方法,将文件夹下的所有文件夹和所有文件统统删除
} catch(NullPointerException e) {//如果不设置文件夹会捕捉空指针异常
System.out.println("不能为空");//控制台输出提示信息
}
}
}

谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、감사합니다 (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc、Takk、Ευχαριστ

FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有的更多相关文章

  1. C&num;获取某一路径下的所有文件名信息(包括子文件夹)

    前言:初步梳理记录,以后慢慢总结更多的方法... 方法一:使用微软提供的方法:Dicrectory类中的:public static string[] GetFiles(string path, st ...

  2. Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

    最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里 有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Goog ...

  3. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在&OpenCurlyDoubleQuote;D&colon;&bsol;java”文件夹之中创建一个与包同名的子文件夹 myPackage(D&colon;&bsol;java&bsol;myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31&period;java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  4. Linux C 读取文件夹下所有文件(包括子文件夹)的文件名【转】

    转自:https://www.cnblogs.com/xudong-bupt/p/3504442.html 本文:http://www.cnblogs.com/xudong-bupt/p/350444 ...

  5. c&plus;&plus; 输出文件夹(不包括子文件夹)中后缀文件

    参考:_finddata_t结构体用法 - 麒麒川的博客 - CSDN博客 准备知识部分: MessageBox MessageBox function (winuser.h) | Microsoft ...

  6. C&num;获取文件夹内文件包括子文件(递归)实例

    这个在我工作上,写了一次工具项目,用上的. static ArrayList FileList = new ArrayList();//这个必须写在方法外, static ArrayList GetA ...

  7. python 小练习之删除文件夹下的所有文件,包括子文件夹中的文件

    先屡一下思路 一步步怎么实现 1  要求是要删除所有文件(只是删除文件 而不是文件夹),所以 我们肯定要遍历这个文件目录 (for  in遍历) 2 每遍历一个元素时(文件),我们要判断该元素的属性是 ...

  8. NSIS如何对一整个目录文件夹(包括子文件夹和其中的文件)压缩

    原来不加/r参数,NSIS编译器就会不认识文件夹啊. File /r [dir] Reference: http://*.com/questions/7973242/nsis- ...

  9. Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

    题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就 ...

随机推荐

  1. 手机访问 localhost

    为了测试开发的手机网站,常常需要使手机直接访问本地网络.在这个过程中碰到几个问题,记下来供以后参考 1. 在本地主机运行apache后,使用localhost和127.0.0.1可以访问页面,但使用I ...

  2. JavaSE聊天室

    今天学习了一下简单聊天程序(类似QQ那种)的编写过程,从最初的0.1版本到最后的1.3版本,功能不断地增强,下面对一天的学习内容进行梳理. 版本0.1 我们的需求是显示一个窗体,其他什么也不用做,其他 ...

  3. poj2406 周期

    脑残wa了一次 var s:ansistring; ans,i,k,m:longint; pre:..] of longint; function max(x,y:longint):longint; ...

  4. Swift 2&period;0 UItableView 的简单使用

    在IOS开发中,UItableView 的使用真的是最常见最普通的了,现在在自学swift 今天也是这用Swift 写了写 UItableview的使用,还有一些经常出错的地方.下面我先把整个控制器的 ...

  5. VMware虚拟机安装教程

    在实际的开发过程中,使用到VMware的时候是很多的.当你的电脑安装的是windows系统而想使用linux系统时,为了避免对本机的系统进行操作,那么安装虚拟机就是一项不错的选择. 在写这篇博文时,刚 ...

  6. WEB安全&lowbar;csrf攻击

    什么是xss跨站攻击? 正常访问服务器A,用户信任并在服务器A上登录操作,服务器A保存着用户的session数据,这时用户并没有退出服务器A的系统,然后访问危险服务器B,本来是用户请求服务器返回数据, ...

  7. Oracle 拼接字符串

    Tom大神写的 CREATE OR REPLACE FUNCTION stragg(input varchar2) RETURN varchar2 PARALLEL_ENABLE AGGREGATE ...

  8. 2013-2014 ACM-ICPC&comma; NEERC&comma; Southern Subregional Contest Problem I&period; Plugs and Sockets 费用流

    Problem I. Plugs and Sockets 题目连接: http://www.codeforces.com/gym/100253 Description The Berland Regi ...

  9. hdu 5438 Ponds(长春网络赛 拓扑&plus;bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others)     ...

  10. iOS-启动动态页跳过设计思路

    概述 根据UIBezierPath和CAShapeLayer自定义倒计时进度条,适用于app启动的时候设置一个倒计时关闭启动页面.可以设置进度条颜色,填充颜色,进度条宽度以及点击事件等. 详细 代码下 ...