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


选择


删除


1.FileUtils.java类

  1. import java.io.File;//导入包
  2. import java.util.List;//导入包
  3.  
  4. public class FileUtils {
  5. // 删除文件夹下所有文件
  6. public static void deleteFiles(File rootFile) { //参数是根文件夹
  7. if (rootFile.listFiles().length == 0) {// 如果用户给定的是空文件夹就退出方法
  8. return;//退出
  9. } else {
  10. File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
  11. for (File file : files) {//使用foreach语句遍历文件数组
  12. if (file.isFile()) {//判断是否为文件
  13. file.delete();// 删除指定文件夹下的所有文件
  14. } else {
  15. if (file.listFiles().length == 0) {//file类型是文件夹且文件夹为空
  16. file.delete();// 删除指定文件夹下的所有空文件夹
  17. } else {
  18. deleteDirectories(file);// 删除指定文件夹下的所有非空文件夹(包括file)
  19. }
  20. }
  21. }
  22. }
  23. }
  24.  
  25. // 删除文件夹及文件夹下所有文件
  26. public static void deleteDirectories(File rootFile) {
  27. if (rootFile.isFile()) {//第一次肯定不是文件类型,因为deleteFiles方法中已经判断过了
  28. rootFile.delete();// 如果给定的File对象是文件就直接删除
  29. } else {// 如果是一个文件夹就将其转换成File数组
  30. File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
  31. for (File file : files) {//使用foreach语句遍历文件数组
  32. deleteDirectories(file);// 如果不是空文件夹则就迭代deleteDictionary()方法
  33. }
  34. rootFile.delete();// 如果是空文件夹就直接删除
  35. }
  36. }
  37.  
  38. // 获得指定目录下的所有文件的路径
  39. public static List<String> getFilePath(List<String> list, File rootFile) {//返回值的就是传入的List<String> list类型,用于输出被删除的文件
  40. File[] files = rootFile.listFiles();// 将非空文件夹转换成File数组
  41. for (File file : files) {//使用foreach语句遍历文件数组
  42. if (file.isDirectory()) {//判断是否为文件夹
  43. getFilePath(list, file);//如果是文件夹则就迭代getFilePath()方法
  44. } else {
  45. //添加file的绝对路径添加到list中,在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'
  46. list.add(file.getAbsolutePath().replace("\\", File.separator));
  47. }
  48. }
  49. //返回所有文件路径,我利用自动生成的文件夹程序,然后再删除发现文本域没输出,原来获得的只是文件路径,我花了半小时找题,被自己蠢哭
  50. return list;//文件的路径是文件!文件!文件!
  51. }
  52. }

2.FileDeleteFrame.java类

  1. import java.awt.BorderLayout;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.io.File;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import java.util.List;
  8.  
  9. import javax.swing.JButton;
  10. import javax.swing.JFileChooser;
  11. import javax.swing.JFrame;
  12. import javax.swing.JPanel;
  13. import javax.swing.JScrollPane;
  14. import javax.swing.JTextArea;
  15. import javax.swing.JTextField;
  16. import javax.swing.border.EmptyBorder;
  17. import java.awt.Font;
  18. import javax.swing.UIManager;
  19.  
  20. //@SuppressWarnings J2SE 提供的一个批注或者注解。
  21. //该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默,
  22. //即忽略这些警告信息。当在可序列化的类上缺少 serialVersionUID 定义时的警告
  23. @SuppressWarnings("serial")
  24. public class FileDeleteFrame extends JFrame {//窗口
  25.  
  26. private JPanel contentPane;//面板
  27. private JTextField chooseTextField;//选择后显示路径的文本域
  28. private File fileName;//文件类型
  29. private JTextArea resultTextArea;//显示被删除的文件路径的文本域
  30.  
  31. public static void main(String[] args) {
  32. try {
  33. //Java Swing 非常漂亮的外观Nimbus使用方法
  34. UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
  35. } catch (Throwable e) {
  36. e.printStackTrace();
  37. }
  38. FileDeleteFrame frame = new FileDeleteFrame();//实例化FileDeleteFrame
  39. frame.setVisible(true);//可显示窗体
  40. }
  41.  
  42. public FileDeleteFrame() {//无参构造函数
  43. setTitle("\u5220\u9664\u6587\u4EF6\u5939\u4E2D\u6240\u6709\u6587\u4EF6");//Unicode字符集编码
  44. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体方式
  45. setBounds(100, 100, 450, 300);//设置窗体左上角初始位置和宽高
  46. contentPane = new JPanel();//面板
  47. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//外边距
  48. setContentPane(contentPane);//为窗体设置面板
  49. contentPane.setLayout(new BorderLayout(0, 0));//设置布局方式为边界布局方式
  50.  
  51. JPanel choosePanel = new JPanel();//选择面板
  52. contentPane.add(choosePanel, BorderLayout.NORTH);//加入到contentPane中,且在北方位置
  53.  
  54. chooseTextField = new JTextField();//实例化,选择后显示路径的文本域
  55. chooseTextField.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
  56. choosePanel.add(chooseTextField);//添加到选择面板
  57. chooseTextField.setColumns(18);//设置最大显示列数
  58.  
  59. JButton chooseButton = new JButton("\u9009\u62E9\u6587\u4EF6\u5939");//Unicode字符集编码
  60. chooseButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
  61. chooseButton.addActionListener(new ActionListener() {//设置按钮监听事件
  62. public void actionPerformed(ActionEvent arg0) {//重写actionPerformed方法
  63. do_chooseButton_actionPerformed(arg0);//调用自定义处理方法,在下方
  64. }
  65. });
  66. choosePanel.add(chooseButton);//添加到选择面板
  67.  
  68. JPanel buttonPanel = new JPanel();//删除面板
  69. contentPane.add(buttonPanel, BorderLayout.SOUTH);//加入到contentPane中,且在南方位置
  70.  
  71. JButton deleteButton = new JButton("\u5F00\u59CB\u5220\u9664");//删除按钮
  72. deleteButton.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
  73. deleteButton.addActionListener(new ActionListener() {//设置按钮监听事件
  74. public void actionPerformed(ActionEvent arg0) {//重写actionPerformed方法
  75. do_deleteButton_actionPerformed(arg0);//调用自定义处理方法,在下方
  76. }
  77. });
  78. buttonPanel.add(deleteButton);//添加到删除面板
  79.  
  80. JScrollPane scrollPane = new JScrollPane();//显示被删除的文件路径的滚动面板
  81. contentPane.add(scrollPane, BorderLayout.CENTER);//加入到contentPane中,且在中间位置
  82.  
  83. resultTextArea = new JTextArea();//显示被删除的文件路径的文本域
  84. resultTextArea.setFont(new Font("微软雅黑", Font.PLAIN, 16));//设置字体,类型,大小
  85. resultTextArea.setText("\u5220\u9664\u4E86\u4EE5\u4E0B\u6587\u4EF6\uFF1A");//使用Unicode字符集编码,设置标题
  86. scrollPane.setViewportView(resultTextArea);//让文本域显示在滚动面板中
  87. }
  88.  
  89. protected void do_chooseButton_actionPerformed(ActionEvent arg0) {//自定义选择按钮事件方法
  90. JFileChooser chooser = new JFileChooser();//文件选择器
  91. chooser.setMultiSelectionEnabled(false);//设置为单选
  92. chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//设置为仅文件夹可选
  93.  
  94. //如果选择打开按钮,这返回JFileChooser.APPROVE_OPTION常量,
  95. //参数是文件选择器的位置窗口的中心位置,如果为null则以屏幕中心位置,如果是组件则以组件所在窗体位置
  96. int result = chooser.showOpenDialog(this.getContentPane());
  97. if (result == JFileChooser.APPROVE_OPTION) {//判断是否为打开
  98. fileName = chooser.getSelectedFile();//获取选择到的文件夹
  99. chooseTextField.setText(fileName.getAbsolutePath());//设置选择文本域信息为文件夹的路径
  100. }
  101. }
  102.  
  103. protected void do_deleteButton_actionPerformed(ActionEvent arg0) {//自定义删除按钮事件方法
  104. try {
  105. List<String> list = new ArrayList<String>();//用于存储被删除的文件路径
  106. FileUtils.getFilePath(list, fileName);//调用删除文件的方法
  107. Iterator<String> iterator = list.iterator();//为list设置迭代器,用于遍历
  108. StringBuilder sb = new StringBuilder();//创建字符串,可实现添加功能
  109. sb.append(resultTextArea.getText() + "\n");//先获取当前删除文本域的信息
  110. while (iterator.hasNext()) {//判断是否有下一个
  111. sb.append(iterator.next());//添加被删除文件的路径
  112. sb.append("\n");//换行
  113. }
  114. resultTextArea.setText(sb.toString());//一口气输出到删除信息文本域
  115. FileUtils.deleteFiles(fileName);//最后调用删除方法,将文件夹下的所有文件夹和所有文件统统删除
  116. } catch(NullPointerException e) {//如果不设置文件夹会捕捉空指针异常
  117. System.out.println("不能为空");//控制台输出提示信息
  118. }
  119. }
  120. }

谢谢、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#获取某一路径下的所有文件名信息(包括子文件夹)

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

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

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

  3. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.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++ 输出文件夹(不包括子文件夹)中后缀文件

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

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

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

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

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

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

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

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

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

随机推荐

  1. java之反射的基本介绍

    什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为Java的反射 ...

  2. CentOS 7 下安装jdk1.8(转)

    原文:https://blog.argcv.com/articles/3155.c CentOS 7下目前默认是jdk1.6和1.7.若需要更高版本的1.8,我们就需要一点额外的手段了. 首先,我们需 ...

  3. caffe 测试时间报错 Aborted at unix time

    今天测试时间报错,具体如下图: 在网上查了一下,大概的原因是由于程序中使用了随机函数造成的,后来检查了一下prototxt中有可能含有随机数的地方,去掉之后就可以了,包括shuffle:true,以及 ...

  4. 1-2-编译U-boot

    1-2-编译U-boot 1.su+enter进入超级用户模式. 2.cd /mnt/+两次Tab去到根目录,ls显示共享文件夹里的文件. 3.解压tar xvfj uboot_TQ210_1.3.4 ...

  5. JSON.parseObject 和 JSON.toJSONString

    JSON.parseObject,是将Json字符串转化为相应的对象:JSON.toJSONString则是将对象转化为Json字符串.在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍 ...

  6. 【JMeter】【性能测试】正则表达式关联

    1:登录接口 这里有一个实际的登录接口,在响应中返回了一串token,如下图 那么我们在接下来的接口-经验库列表中,就必须带入这一串token,否则响应报错,如下图所示   测试开发交流群 31776 ...

  7. 弱网测试之基于TP-LINK

    使用路由器做弱网测试应该是最真实的,网络工程师/运维工程师体会应该最深刻.这种方式测试成本也不高,比较推荐. 设置的方式不在赘述,参见使用手册,高级设置即可. 结束语: 这样测试的时候,测试机器连接该 ...

  8. 接口测试工具-Jmeter使用笔记(一:运行一个HTTP请求)

    博主自从毕业从事软件测试行业距今一年半时间,大多数时间都在跟各种API打交道,使用过的接口测试工具也有许多,本文记录下各工具的使用心得,以及重点介绍我在工作中是如何使用Jmeter做测试的,都是在wi ...

  9. MongoDB 查询$关键字 $in $or $all

    属于:$in 满足其中一个元素的数据把age=13,73 的数据显示 > db.user.find({age: { $in:[13,73]}}) { "_id" : Obje ...

  10. Tx.Origin 用作身份验证

    Solidity 中有一个全局变量,tx.origin,它遍历整个调用栈并返回最初发送调用(或交易)的帐户的地址.在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击. 有关进一步阅读 ...