Java支持对文件进行顺序存取和随机存取操作,提供File类记载文件属性信息,对文件的读/写操作通过流实现。
一、File文件操作类可保存文件或目录(windows系统中“目录”有一个更加形象的名字——文件夹)的各种属性(文件名、文件长度、最后修改时间、是否只读等),提供获得当前文件(或目录)的路径名、判定指定文件(或目录)是否存在、获取当前目录中所有文件列表、创建文件、删除文件、创建目录等操作的方法。
二、常见File类构造方法
public File(String pathname)//通过将给定路径名字符串转换为抽象路径名来创建一个File实例对象(即:pathname指定文件名)
public File(String parent ,String child)//根据 parent 路径名字符串和 child 路径名字符串创建一个
File实例对象
(parent指定目录名,child指定文件或目录名)
public File(File parent ,String child)//根据 parent 抽象路径名和 child 路径名字符串创建一个File
实例对象。(parent指定目录名,child指定文件或目录名)
注:一个 File对象即可以表示文件,也可以表示一个目录
三、常见方法
public String getName( ) //返回文件或目录名
public String getPath( ) //返回相对路径名
public Sting getAbsolutePath( ) //返回绝对路径名
public long length( ) //返回文件字节长度
public long lastModified( ) //返回最后修改时间
public boolen exists( ) //判定文件或目录是否存在
public boolen canRead() //判定文件是否可读
public boolen isFile() //判定当前File类对象是否为文件
public boolen isDirectory() //判定当前File类对象是否为目录
public boolen setReadOnly() //设置文件属性为只读
public boolen setLastModified( ) //设置文件或目录最后修改时间
public int compareTo(File pathname) //比较两个文件对象的内容
public boolen ranemeTo(File dest) //重命名
public boolen createNewFile( ) //创建新文件
public boolen delete() //删除文件或目录
public boolen mkdie( ) // 创建指定目录,正常创建时返回true
public String[ ] list( ) //返回目录中的所有文件名字符串
public File[ ] listFiles( ) //返回目录中的所有File类实例对象
注:windows系统中文件或目录的路径由反斜线(\)分隔,在Java字符串中,“\”之后是转义字符,需要使用“\\”
四、实例:文件搜索应用
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.io.File;
public class SearchFile extends JFrame{
private JTextField path_field;
private JTextField key_field;
private JTextArea text_area;
public void showUI(){
setTitle("文件搜索");
setSize(600,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
setLayout(new FlowLayout());
JLabel label_path = new JLabel("路径");
JLabel label_key = new JLabel("关键字");
path_field = new JTextField(20);
key_field = new JTextField(10);
JButton button = new JButton("搜索");
text_area = new JTextArea(50,30);
button.addActionListener(action_listener);
add(label_path);
add(path_field);
add(label_key);
add(key_field);
add(button);
add(text_area);
setVisible(true);
}
ActionListener action_listener = new ActionListener(){
public void actionPerformed(ActionEvent e){
text_area.setText("");
String path = path_field.getText();
String key =key_field.getText();
countFile(path,key);
}
};
public void searchFile(String path,String key){
File file = new File(path);
if(file.exists()){
if(file.isFile()){
String fileName = file.getName();
if(fileName.contains(key)){
text_area.append(fileName+"\r\n");
}
}else if(file.isDirectory()){
File[] files = file.listFiles();
if(files!=null){
for(int i=0;i<files.length;i++){
searchFile(files[i].getAbsolutePath(),key); //递归调用
}
}
}
}else{
System.out.println("输入的路径有误!");
}
}
}