File的使用(查找文件)

                      File类的使用的总结
file类与java.io包中,可以通过File对象的方法创建对象,删除文件,列表目录下的文件判断文件是目录还是正式文件。
一、文件的系统规则:
1、文件的全名包括文件的路径名和扩展名字,单独讲一个文件名时,是不带路径名但带扩展名的文件名
2、同意目录下不可能存在同名的目录和真实文件,系统主要有目录类型的的文件和真实文件两种,正实文件没有扩展名。
3、相对目录指不以路径分隔符开头的文件路径,绝对目录是以根目录开头的路径,当前目录指相对与程序运行时的目录算起的相对路径
4、目录分割符和路径分割符在liunx和win平面上不同,前者为“/”,和“:”,后者为“\”和“;”,因此不要硬编码到程序中,而应使用File类提供的相应属性。
二、File类的构造器
1、File (File parent ,String child )表示在父目录parent下建一个child 子目录对象
2、File(String parent,String.pathnam)表示创建一个指向pathname名字的File对象
3、File(string parent String child)表示以一个名为parent的字符串作为父目录名,创建一个指向名为child文件的文件对象
三、File 类十个的重要方法
1、boolean exists():判断File对象指向的文件是否存在
2、String getName()得到文件不带路径的名字
3、boolean isDirectoty();判断文件是否为目录
4、boolean isFile();判断File对象指向的文件是否为真实文件
5、long length();得到FIle文件对象指向的文件的长度,以byte计,如指向目录,则返回0 ;
6、File[] listFile();将File对象指向的文件的下一级的所有目录和真实文件作为一个数组返回。若File对象为一个真实文件,则返回null
7、boolean mkdir();根据File对象的名字(路径)创建一个目录,如是相对目录,则在当前目录下,注意:仅可创建一级目录,如有已有的同名真实文件存在,则抛出异常信息
8、boolean mkdirs():如果File对象名字有很多级目录,可以一次性创建
9、boolean delete();从磁盘上删除File对象所指向的文件
10、boolean createNewFile():根据File对象的名字在磁盘上创建一个新的真实文件;如已经存在同名的文件则覆盖,如存在同名目录,则抛出异常信息,创建失败:


这个是查找文件的一个小程序
package wenjian;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.accessibility.AccessibleContext;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Jframewj extends JFrame {

private String b;
private String b1;
private String j;
private JTextArea ja;
private int fileCount=0;
private int classCount=0;
private String txt;
JComboBox bo;//根目录名
JComboBox bo1;//文档名
JTextField jt;

// private String
public static void main(String[] args) {
Jframewj jf = new Jframewj();
jf.Beautiful();
}

public int run(String dirName){


fileCount=0;
//实例化一个文件,并把路劲传给它
File dirFile = new File(dirName);
File[] subFile = dirFile.listFiles();//获取给定路径的列表目录
if(null==subFile||subFile.length==0){
return 0;
}
//遍历所有的目录
for(int i=0;i<subFile.length;i++){
if(subFile[i].isDirectory()){
//得到目录路径
String subDir=subFile[i].getAbsolutePath();
// System.out.println(subDir+"nnnnn'");
// ja.setText(ja.getText() + "目录"+subDir + "\r\n");
if("全部"==b1){
ja.append("目录"+subDir + "\r\n");
}
//输出对应后缀名的文件
else if(subDir.endsWith(b1)){
ja.append("目录"+subDir + "\r\n");
classCount++;
}
                //进行递归操作,统计所有文件的个数
fileCount+=run(subDir);
}
//判断是否为文件
if(subFile[i].isFile()){
fileCount++;
//当为文件时,得到路径,并输出
String fileName=subFile[i].getAbsolutePath();
// ja.setText(ja.getText() + fileName + "\r\n");
if("全部"==b1){
ja.append(fileName + "\r\n");
}
else if(fileName.endsWith(b1)){
ja.append(fileName + "\r\n");
classCount++;
}
}
}
return fileCount;

}

private void Beautiful() {
// 设置画板的大小,标题,显示位置
this.setSize(800, 500);
this.setTitle("文件查找");
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setLocation(200, 200);
// 设置为边框布局
this.setLayout(new BorderLayout());

ja = new JTextArea(22, 80);// 实例化一个显示框
// 设置显示框的行列
ja.setFont(new Font("楷体", Font.BOLD, 15));
JScrollPane jso = new JScrollPane(ja);// 实例化一个有横条的面板
// 贴三个标签
JLabel j1 = new JLabel("路径:");
JLabel j2 = new JLabel("文件:");
JLabel j3 = new JLabel("拓展名:");
jt = new JTextField(8);// 实例化一个文本输入框
bo = new JComboBox();
bo1 = new JComboBox();// 实例化一个下拉框;
JButton jb = new JButton("开始");
bo.addItem("全部");
bo.addItem("C:/");
bo.addItem("D:/");
bo.addItem("E:/");
bo.addItem("F:/");
String [] bo2 = new String[]{"全部",".txt",".java",".docx",".zip",".jpg",".wav"};
for (int i=0;i<bo2.length;i++){
bo1.addItem(bo2[i]);
}
FlowLayout f = new FlowLayout();
this.setLayout(f);
// this.BorderLayout.NORTH.
// 将各种按钮标签贴到窗体上
this.add(j1, BorderLayout.NORTH);
this.add(bo, BorderLayout.NORTH);
this.add(j2, BorderLayout.NORTH);
this.add(jt, BorderLayout.NORTH);
this.add(j3, BorderLayout.NORTH);
this.add(bo1, BorderLayout.NORTH);
this.add(jb, BorderLayout.NORTH);
this.add(jso, BorderLayout.CENTER);
this.setVisible(true);
// b= bo.getActionCommand();

// System.out.println(b);

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
b = bo.getSelectedItem().toString();//得到根目录下拉框里的选项值

b1 = bo1.getSelectedItem().toString();//得到扩展名下拉框的选项值
txt=jt.getText();//得到文本框里输入的目录路径
System.out.println(b+"mmmmmmmmm");
// System.out.println("============"+txt);
//判断文本输入框是否输入了目录路径
if(!txt.isEmpty()){
b=txt;
// System.out.println(b+"uuuuuu");
}
if("全部"!=b){
// System.out.println(b+"oooooooooooo");
//调用统计方法
run(b);
if(b1=="全部"){
ja.append("目录"+b+"下的文件的总数为"+ fileCount+ "\r\n");
}
// ja.setText(ja.getText()+"目录"+b+"下的文件的总数为"+ fileCount+ "\r\n");
else
{
System.out.println(b+"111111111111");
ja.append("目录"+b+"下拓展名为"+b1+"的文件总数为"+ classCount+ "\r\n");
classCount=0;
}
}
// else{
// for(int i=0;i<5;i++){
// Thread th = new Thread();
// th.start();
// }
// }
}
});
}
}




你可能感兴趣的:(File)