java io包中 File的输入输出流(读,写操作)

来源:互联网 发布:mac pink you think 编辑:程序博客网 时间:2024/06/05 11:09
java.io包也是Java内置的包,其中包含一系列对文件和目录的属性进行操作,对文件进行读写操作的类


File:

文件可以认为是相关记录或存放在一起的数据的集合。File类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录,主要用来获取文件本身的一些信息。

Stream:
根据流动方向的不同,流分为输入流和输出流,对于输入和输出流,由于传输格式的不同,又分为字节流和字符流。

       字节流:指8位的通用字节流,以字节为基本单位,在java.io包中,
        对于字节流进行操作的类大部分继承于InputStream(输入字节流)类和OutputStream(输出字节流)类

       字符流:指16位的Unicode字符流,以字符(两个字节)为基本单位,非常适合处理字符串和文本,
       对于字符流进行操作的类大部分继承于Reader(读取流)类和Writer(写入流)类



FileInputStream类和FileOutputStream类是成对出现的,一个进行输入(读文件)操作,一个进行输出(写文件)操作


下面程序用输入输出流实现文件的遍历,即 写一个文件搜索器

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import java.io.File;
import java.io.FileNotFoundException;




import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
//import javax.swing.JTextArea;
import javax.swing.JTextField;




public class FileQuery extends JFrame{
private JTextField filed_path;
private JTextField filed_filename;
//private JTextArea show_info;
private TextArea show_info;
private String p;
private String n;



//显示界面
public void showUI(){
//面板属性
this.setTitle("文件搜索器");
this.setSize(700, 700);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setLayout(new FlowLayout());

//组件
JLabel label_path = new JLabel("路径:");
JLabel label_name = new JLabel("文件名:");
filed_path = new JTextField(15);
filed_filename = new JTextField(10);
JButton button_search = new JButton("搜索");
show_info = new TextArea(39,70);
show_info.setBackground(Color.orange);

//给按钮添加事件监听
button_search.addActionListener(action_listener);


//添加属性到窗体上
this.add(label_path);
this.add(filed_path);
this.add(label_name);
this.add(filed_filename);
this.add(button_search);
this.add(show_info);

//设置面板可见
this.setVisible(true);


}
//创建事件监听对象
ActionListener action_listener = new ActionListener(){
//抽象方法
public void actionPerformed(ActionEvent e){

//得到用户信息
p = filed_path.getText();
n = filed_filename.getText();
//创建线程类对象
MyThread thread = new MyThread();

thread.start();

}



};

//遍历文件
public void queryFile(String path){

File file = new File(path);
if(file.exists()){
if(file.isFile()){//文件
//System.out.println(file.getAbsolutePath());
if(file.getAbsolutePath().contains(n)){
//显示当前文件的名字到输入区域
show_info.append(file.getAbsolutePath()+"\r\n");
}
}else if(file.isDirectory()){ //文件夹
File[] files = file.listFiles();
if(files!=null){
for(File f:files){
queryFile(f.getAbsolutePath());
}
}
}
}

}




//创建内部类实现线程
public class MyThread extends Thread {
//重写run方法
public void run() {
//查询
queryFile(p);

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


}

程序运行如下:


查文件




原创粉丝点击