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


选择


删除


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

    前言:初步梳理记录,以后慢慢总结更多的方法... 方法一:使用微软提供的方法: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. LeetCode 973 K Closest Points to Origin 解题报告

    题目要求 We have a list of points on the plane.  Find the K closest points to the origin (0, 0). (Here, ...

  2. LEO原创-FMX之你不知道的ARC

    LEO原创13498714 FMX加入了ARC技术,对象创建后不用释放,FMX会帮你释放,是不是这样就不用关心对象的释放了呢,非也! 写简单的代码,这个功能也许很好用,但如果你写的是一个项目,那隐藏的 ...

  3. Python开发【笔记】:aiohttp搭建简易聊天室

    简易聊天室: 1.入口main.py import logging import jinja2 import aiohttp_jinja2 from aiohttp import web from a ...

  4. 三、Spring Boot 日志

    1.日志框架 小张:开发一个大型系统: 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? 2.框架来记录系统的一些运行时信息:日志框架 ...

  5. 关于安装SVN Service 出错 Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details

    关于安装SVN Service 出错 Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in ...

  6. 用canvas画三角形的方法

    <canvas id="favoriteRectangle" width="30" height="30"></canva ...

  7. django基础-02:虚拟环境

    4. 虚拟环境 4.1 概念 之前安装python包的命令: sudo pip3 install 包名 包的安装路径:/usr/local/lib/python3.5/dist-packages 在同 ...

  8. 搭建nginx服务器,虚拟主机,反向代理

    1 搭建Nginx服务器 1.1 问题 在IP地址为192.168.10. 5的主机上安装部署Nginx服务,并可以将Nginx服务器升级到更高版本,要求编译时启用如下功能: SSL加密功能 查看服务 ...

  9. blockdev命令 blkid命令 lsblk命令

    blockdev命令  blkid命令  lsblk命令 http://www.jb51.net/LINUXjishu/310389.html block相关的命令 这篇文章主要介绍了Linux bl ...

  10. 20165236 《Java程序设计》第七周学习总结

    20165236 <Java程序设计>第七周学习总结 教材学习内容总结 第十一章  JDBC与MySQL数据库 1.MySQL数据库管理系统: MySQL数据库管理系统,简称MySQL,是 ...