Java.io之文件

来源:互联网 发布:淘宝女装英文店名 编辑:程序博客网 时间:2024/06/06 00:40

java.io包也是Java内置的包,其中包含一系列对文件和目录的属性进行操作,对文件进行读写操作的类

文件即是具体的某个文件,如:某个ppt,某个doc;文件一般是存放在磁盘上的,例如:硬盘、光盘等等,文件可以认为是相关记录或存放在一起的数据的集合。

目录可以理解为文件夹。

File类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录

当创建一个文件对象后,就可以利用它来对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等等;

需要注意的是:File对象并不能直接对文件进行读/写操作,只能查看文件的属性

File类的构造方法有4种重载方式,常用的如下:

构造方法:File(String pathname)        相关说明:指定文件(或目录)名和路径创建文件对象

例子://在当前目录下创建一个与aaa.txt文件名相关联的文件对象

File f1 = new File("aaa.txt");
//指明详细的路径以及文件名,请注意双斜线
File f2 = new File("D:\\Java\\Hello.java");

在文件夹下创建一个文件的方法:

public static void main(String[] args) {String path = "D:\\123.doc";File file = new File(path);try {boolean flag = file.createNewFile();//创建文件可能会有异常,路径无效或者硬盘已满,要对异常进行处理,这里用的是try  catch语句if (flag) {//检测创建成功还是失败System.out.println("创建文件成功!");}else {System.out.println("创建文件失败!!");}} catch (IOException e) {e.printStackTrace();}}

这是我写的一个文件搜索器

import java.awt.Color;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.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class FileQuery extends JFrame implements ActionListener {JTextField jt_path;JLabel jt_countfile;JLabel jt_countDirectionField;static JTextArea jt_result;// 定义计数器static int countFile = 0;static int countDirection = -1;//由于把本身的这个文件夹也算入了,所以要减一个// 窗体的装饰方法public FileQuery() {// 设置窗体属性setTitle("文件搜索器");setSize(500, 500);setLocationRelativeTo(null);setDefaultCloseOperation(3);// 设置布局setLayout(new FlowLayout());// 创建组件对象JLabel jLabel_path = new JLabel("请输入路径:");JLabel jLabel_file = new JLabel("文件数:"+" ");JLabel jLabel_direction = new JLabel("文件夹数:"+" ");jt_path = new JTextField(30);jt_countfile = new JLabel("0");//同时把标签初始化为0jt_countDirectionField = new JLabel("0");JButton jb_query = new JButton("搜索");// 创建搜索结果的显示模块jt_result = new JTextArea(15, 40);//创建滚动条对象    并且把文本域对象添加到滚动条中JScrollPane jsp = new JScrollPane(jt_result);//因为他是滚动面板,自动生成滚动条,所以可以包含文本域// 设置文本框背景jt_countDirectionField.setBackground(Color.white);// 把组件添加到窗体上add(jLabel_path);add(jt_path);add(jb_query);add(jLabel_file);add(jt_countfile);add(jLabel_direction);add(jt_countDirectionField);add(jsp);// 设置可见setVisible(true);// 给按钮添加监听jb_query.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub// 得到用户输入的文本框的内容String path = jt_path.getText();FileQuery.query(path);//因为是静态方法,所以没有对象时,就能用类名来调用//字符串与任何一个类型进行拼接jt_countfile.setText(countFile+"");jt_countDirectionField.setText(String.valueOf(countDirection));}/** * 搜索指定路径下的文件信息(并且打印所有的文件的绝对路径)  * 搜索文件的方法并且计数,然后把绝对路径显示到文本域中 *  * @param path *            用户输入的文件的绝对路径 */public static void query(String path) {// 根据得到的path构建一个File对象File file = new File(path);// 判断该path的文件是否存在if (file.exists()) {if (file.isFile()) {//如果是文件类型countFile++;//把文件的绝对路径显示jt_result.append(file.getAbsolutePath());jt_result.append("\r\n");//回车和换行是两步骤} else if (file.isDirectory()) {countDirection++;jt_result.append(file.getAbsolutePath());jt_result.append("\n");//如果是文件夹类型,则得到该文件夹下的所有文件和文件夹File[] files = file.listFiles();for (int i = 0; i < files.length; i++) {//对该文件夹下的每一个文件或文件夹创建一个File对象,并让其调用这个方法,并且递归下去File f = files[i];query(f.getAbsolutePath());}}}//如果该路径不存在文件else {jt_result.append("路径无效");}}}

public class test {public static void main(String[] args) {FileQuery fq = new FileQuery();}}

增加了关键字搜索功能

import java.awt.Color;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.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class FileQueryByKey extends JFrame implements ActionListener{JTextField jt_path;static JLabel jl_countfile;static JLabel jl_countDirectionField;static JTextField jt_key;static JTextArea jt_result;// 创建搜索结果的显示模块static int countFile = 0;// 定义文件计数器static int countDirection = 0;//定义文件夹计数器     这里是先判断后加,所以不要再多减去static String key;//定义key变量,用来存放用户输入的关键字// 窗体的装饰方法public FileQueryByKey (){// 设置窗体属性setTitle("文件搜索器");setSize(500, 450);setLocationRelativeTo(null);setDefaultCloseOperation(3);// 设置布局setLayout(new FlowLayout());// 创建组件对象JLabel jLabel_path = new JLabel("请输入路径:");JLabel jLabel_file = new JLabel("文件数:"+" ");JLabel jLabel_direction = new JLabel("文件夹数:"+" ");jt_path = new JTextField(30);jl_countfile = new JLabel("0");//同时把标签初始化为0jl_countDirectionField = new JLabel("0");JButton jb_query = new JButton("搜索");//创建按关键字搜索的相关组件JLabel jLabel_key = new JLabel("请输入关键字:");jt_key = new JTextField(25);// 创建搜索结果的显示模块jt_result = new JTextArea(15, 40);//创建滚动面板对象    并且把文本域对象添加到滚动面板中JScrollPane jsp = new JScrollPane(jt_result);//因为他是滚动面板,自动生成滚动条,所以可以包含文本域// 设置文本域或滚动面板背景jsp.setBackground(Color.white);// 把组件添加到窗体上add(jLabel_path);add(jt_path);add(jLabel_key);add(jt_key);add(jb_query);add(jLabel_file);add(jl_countfile);add(jLabel_direction);add(jl_countDirectionField);add(jsp);// 设置可见setVisible(true);// 给按钮添加监听jb_query.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//每次事件触发都置零countFile = 0;countDirection= 0;// 得到用户输入的文本框的内容String path = jt_path.getText();key = jt_key.getText();if(key!=null&&path!=null){//判断关键字那栏是否为空keyQuery(path,key);//因为是静态方法,所以没有对象时,就能用类名来调用}
/** * 搜索指定路径下的文件信息(并且打印所有的文件的绝对路径)  * 搜索文件的方法并且计数,然后把绝对路径显示到文本域中 *  * @param path *            用户输入的文件的绝对路径 */public static void keyQuery(String path,String key) {// 根据得到的path构建一个File对象File file = new File(path);// 判断该path的文件是否存在if (file.exists()) {if (file.isFile()) {//如果是文件类型if (path.contains(key)) {//如果包含keycountFile++;jl_countfile.setText(countFile+"");//把文件的绝对路径显示jt_result.append(file.getAbsolutePath());jt_result.append("\r\n");//回车和换行是两步骤}} else if (file.isDirectory()) {//如果是文件夹类型if (path.contains(key)) {//如果包含keycountDirection++;jt_result.append(file.getAbsolutePath());jt_result.append("\n");jl_countDirectionField.setText(String.valueOf(countDirection));}//是文件夹类型,则得到该文件夹下的所有文件和文件夹File[] files = file.listFiles();if (files!=null) {//注意:目录为空时,返回值为null,而数组长度为0,不一定为空,因为定义时,可以定义长度为0的数组!!!!!!!!!for (int i = 0; i < files.length; i++) {//对该文件夹下的每一个文件或文件夹创建一个File对象,并让其调用这个方法,并且递归下去File f = files[i];keyQuery(f.getAbsolutePath(),key);}}}}//如果该路径不存在文件else {jt_result.append("路径无效");}}}


0 0