FILE⽂件删除操作(删除指定⽂件夹下所有⽂件和⽂件夹包括⼦⽂件夹下所有⽂件和⽂件夹),就。。。
2018-11-05 19:42:08开始写
选择
删除
1.FileUtils.java类
1import java.io.File;//导⼊包
2import java.util.List;//导⼊包
3
4public class FileUtils {
htmlborder5// 删除⽂件夹下所有⽂件
6public static void deleteFiles(File rootFile) { //参数是根⽂件夹
7if (rootFile.listFiles().length == 0) {// 如果⽤户给定的是空⽂件夹就退出⽅法
8return;//退出
9 } else {
10 File[] files = rootFile.listFiles();// 将⾮空⽂件夹转换成File数组
11for (File file : files) {//使⽤foreach语句遍历⽂件数组
12if (file.isFile()) {//判断是否为⽂件
13 file.delete();// 删除指定⽂件夹下的所有⽂件
14 } else {
15if (file.listFiles().length == 0) {//file类型是⽂件夹且⽂件夹为空
16 file.delete();// 删除指定⽂件夹下的所有空⽂件夹
17 } else {
18 deleteDirectories(file);// 删除指定⽂件夹下的所有⾮空⽂件夹(包括file)
19 }
20 }
21 }
22 }
23 }
24
25// 删除⽂件夹及⽂件夹下所有⽂件
26public static void deleteDirectories(File rootFile) {
27if (rootFile.isFile()) {//第⼀次肯定不是⽂件类型,因为deleteFiles⽅法中已经判断过了
28 rootFile.delete();// 如果给定的File对象是⽂件就直接删除
29 } else {// 如果是⼀个⽂件夹就将其转换成File数组
30 File[] files = rootFile.listFiles();// 将⾮空⽂件夹转换成File数组
31for (File file : files) {//使⽤foreach语句遍历⽂件数组
32 deleteDirectories(file);// 如果不是空⽂件夹则就迭代deleteDictionary()⽅法
33 }
34 rootFile.delete();// 如果是空⽂件夹就直接删除
35 }
36 }
37
38// 获得指定⽬录下的所有⽂件的路径
39public static List<String> getFilePath(List<String> list, File rootFile) {//返回值的就是传⼊的List<String> list类型,⽤于输出被删除的⽂件
40 File[] files = rootFile.listFiles();// 将⾮空⽂件夹转换成File数组
41for (File file : files) {//使⽤foreach语句遍历⽂件数组
42if (file.isDirectory()) {//判断是否为⽂件夹
43 getFilePath(list, file);//如果是⽂件夹则就迭代getFilePath()⽅法
44 } else {
45//添加file的绝对路径添加到list中,在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'
46 list.AbsolutePath().replace("\\", File.separator));
47 }
48 }
49//返回所有⽂件路径,我利⽤⾃动⽣成的⽂件夹程序,然后再删除发现⽂本域没输出,原来获得的只是⽂件路径,我花了半⼩时题,被⾃⼰蠢哭50return list;//⽂件的路径是⽂件!⽂件!⽂件!
51 }
52 }
2.FileDeleteFrame.java类
1import java.awt.BorderLayout;
2import java.awt.event.ActionEvent;
3import java.awt.event.ActionListener;
4import java.io.File;
5import java.util.ArrayList;
6import java.util.Iterator;
7import java.util.List;
8
8
9import javax.swing.JButton;
10import javax.swing.JFileChooser;
11import javax.swing.JFrame;
12import javax.swing.JPanel;
13import javax.swing.JScrollPane;
14import javax.swing.JTextArea;
15import javax.swing.JTextField;
16import javax.swing.border.EmptyBorder;
17import java.awt.Font;
18import javax.swing.UIManager;
19
20//@SuppressWarnings J2SE 提供的⼀个批注或者注解。
21//该批注的作⽤是给编译器⼀条指令,告诉它对被批注的代码元素内部的某些警告保持静默,
22//即忽略这些警告信息。当在可序列化的类上缺少 serialVersionUID 定义时的警告
23 @SuppressWarnings("serial")
24public class FileDeleteFrame extends JFrame {//窗⼝
25
26private JPanel contentPane;//⾯板
27private JTextField chooseTextField;//选择后显⽰路径的⽂本域
28private File fileName;//⽂件类型
29private JTextArea resultTextArea;//显⽰被删除的⽂件路径的⽂本域
30
31public static void main(String[] args) {
32try {
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
42public 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() {//设置按钮监听事件
62public 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() {//设置按钮监听事件
73 deleteButton.addActionListener(new ActionListener() {//设置按钮监听事件
74public 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
89protected 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则以屏幕中⼼位置,如果是组件则以组件所在窗体位置
96int result = chooser.ContentPane());
97if (result == JFileChooser.APPROVE_OPTION) {//判断是否为打开
98 fileName = SelectedFile();//获取选择到的⽂件夹
99 chooseTextField.AbsolutePath());//设置选择⽂本域信息为⽂件夹的路径
100 }
101 }
102
103protected void do_deleteButton_actionPerformed(ActionEvent arg0) {//⾃定义删除按钮事件⽅法
104try {
105 List<String> list = new ArrayList<String>();//⽤于存储被删除的⽂件路径
106 FilePath(list, fileName);//调⽤删除⽂件的⽅法
107 Iterator<String> iterator = list.iterator();//为list设置迭代器,⽤于遍历
108 StringBuilder sb = new StringBuilder();//创建字符串,可实现添加功能
109 sb.Text() + "\n");//先获取当前删除⽂本域的信息
110while (iterator.hasNext()) {//判断是否有下⼀个
111 sb.());//添加被删除⽂件的路径
112 sb.append("\n");//换⾏
113 }
114 resultTextArea.String());//⼀⼝⽓输出到删除信息⽂本域
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、Ευχαριστ
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论