FILE文件删除操作(删除指定文件夹下所有文件和…

2018-11-06 06:51:39来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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、Ευχαριστ

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:【SSH网上商城项目实战12】添加和更新商品功能的实现

下一篇:【SSH网上商城项目实战09】添加和更新商品类别功能的实现