java案例开发集锦之io流与多线程的文件删除

   木案例使用多线程对目标路径中的指定文件和子目录中的同名文件进行删除工作主要运用线程与io流的功能。
 此案例用到了java.io.file类中的许多知识。其中有他们的构造方法如下:
File(File parent, String child) 
 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri) 
 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
java.swing.JFileChoose的用法
设计的详细步骤:
1.界面的设计(其中包括JLabel,JTextFeild,JButton等组件的应用)
2.添加成员变量,其中有FileDeletThread(内部类),JFilechooser(文件的选择)。
3.操作的目录或文件可以通过建立Flle类的对象来实现
4.文件的操作实现利用Jfilechooser来实现,其中的部分代码
JFileChooser fc=new JFileChooser();
fc.showOpenDialog(this);
if(fc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION);
5.为按钮添加监听
6.获取用户输入的路径并取得路径中的文件和文件夹,存入数组中
7.删除文件
8.为文本框添加鼠标与键盘监听
程序的源码

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
 * 使用多线程删除指定目录及 子目录下所有指定文件
 * @author majiangbao
 */
public class FramefileDelete extends JFrame {
private JLabel label=new JLabel("请输入路径或单击浏览按钮选择路径",JLabel.LEFT);
private JLabel label1=new JLabel("注意:删除指定目录及 子目录下所有指定文件",JLabel.LEFT);
private JTextField  patch=new JTextField();
private JButton Browes=new JButton("浏览");
private JButton Deltel=new JButton("删除");
private JPanel panel;
public int filecount;
private FileDeletThread thread;
/**构造器*/
public FramefileDelete(){
super();
init();
}
/**初始化窗体*/
private void init() {
this.setBounds(100, 100, 200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(getJPanel());
this.setTitle("文件删除");
}
private JPanel getJPanel(){
if(panel==null){
panel=new JPanel();
panel.setLayout(new BorderLayout());
JPanel panel1=new JPanel();
panel1.setLayout(new FlowLayout());
panel1.add(Browes,FlowLayout.RIGHT);
panel1.add(Deltel,FlowLayout.RIGHT);
JPanel panel2=new JPanel();
panel2.setLayout(new BorderLayout());
panel2.add(panel1,BorderLayout.NORTH);
panel2.add(label1,BorderLayout.CENTER);
panel.add(patch,BorderLayout.CENTER);
panel.add(panel2,BorderLayout.SOUTH);
panel.add(label,BorderLayout.NORTH);
Deltel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
File file=new File(patch.getText());
File[]files=(new File(file.getParent())).listFiles();
String name=file.getName();
filecount = 0;
thread=new  FileDeletThread(files,name);
}});
Browes.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JFileChooser fc=new JFileChooser();
//int returnval=fc.showOpenDialog();
}});
}
return panel;
}
class FileDeletThread extends Thread{
File[]files;
String filesname;
public FileDeletThread(File[] files,String name){
this.filesname=name;
this.files=files;
}
public void run(){
for(int i=0;i
if(files[i].isFile()||files[i].isHidden()&&files[i].getName().equals(filesname)){
filecount++;
new JOptionPane("共检测到"+filecount+"文件要删除");
if(files[i].delete()){
new JOptionPane(files[i].getName()+"文件已经删除");
}else{
new JOptionPane(files[i].getName()+"文件删除失败");
}
}else if(files[i].isDirectory()){
File file=new File(files[i].getAbsolutePath());
thread=new FileDeletThread(file.listFiles(),filesname);
thread.start();
}
}
}
}
}
 
  
 
  




你可能感兴趣的:(案例开发)