FILE文件删除操作(删除指定文件夹下所有文件和…
2018-11-06 06:51:39来源:博客园 阅读 ()
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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 怎么用Java 高效提取、替换、删除PDF文档中的图片 2020-06-09
- B树和B+树的插入、删除图文详解 2020-06-09
- Spring Boot 实现配置文件加解密原理 2020-06-08
- Java跨平台原理(字节码文件、虚拟机) 以及Java安全性 2020-06-07
- 【Java-jxl插件】【Excel文件读写报错】jxl.read.biff.BiffE 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash