流的分类:
• 按数据流动方向
– 输入流:只能从中读取字节数据,而不能向其写出数据
– 输出流:只能向其写入字节数据,而不能从中读取数据
• 按照流所处理的数据类型
– 字节流:用于处理字节数据。
– 字符流:用于处理Unicode字符数据
• 按照流所处理的源
– 节点流:从/向一个特定的IO设备读/写数据的流
– 处理流:对已存在的流进行连接和封装的流
基本流类的继承关系
–
–
今天学得还是输入输出流,我们的作业是用今天的知识写出记事本中保存饿功能。
用JAVA编程的记事本:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class TestMenu extends Frame implements ActionListener{
FileDialog fd_load;
FileDialog fd_save;
TextArea ta;
String file= "";
MenuBar mb;
Menu mnFile;
MenuItem miOpen,miSave,miSaveAs;
public static void main(String args[]){
TestMenu tfd=new TestMenu();
tfd.setSize(400,200);
tfd.setLocation(450,200);
tfd.setVisible(true);
}
public TestMenu(){
super("记事本");
mb=new MenuBar();
mnFile=new Menu("文件");
miOpen=new MenuItem("打开");
miSave=new MenuItem("保存");
miSaveAs=new MenuItem("另存为");
mnFile.add(miOpen);
mnFile.add(miSave);
mnFile.add(miSaveAs);
mb.add(mnFile);
setMenuBar(mb);
ta=new TextArea();
add(ta,BorderLayout.CENTER);
miOpen.addActionListener(this);
miSave.addActionListener(this);
miSaveAs.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
fd_load=new FileDialog(this,"打开文件",FileDialog.LOAD);
fd_save=new FileDialog(this,"保存文件",FileDialog.LOAD);
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if(s.equals("打开")){
fd_load.setVisible(true);
String d=fd_load.getDirectory();
String f=fd_load.getFile();
if((d!=null)&&(f!=null)){
file=d+f;
loadFile();
}
}else if(s.equals("保存")){
if((file==null)||file.equals("")){
saveFileAs();
}else{
saveFile();
}
}else if(s.equals("另存为")){
saveFileAs();
}
}
public void loadFile(){
ta.setText("");
this.setTitle("记事本--"+file);
try{
BufferedReader br=new BufferedReader(new FileReader(file));
String s=br.readLine();
while(s!=null){
ta.append(s+"\n");
s=br.readLine();
}
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
public void saveFileAs(){
fd_save.setVisible(true);
String d=fd_save.getDirectory();
String f=fd_save.getFile();
if((d!=null)&&(f!=null)){
file=d+f;
saveFile();
setTitle("记事本--"+file);
}
}
private void saveFile() {
String content=ta.getText();
try{
PrintWriter pw=new PrintWriter(new FileWriter(file));
pw.println(content);
pw.close();
}catch(IOException e){
e.printStackTrace();
}
}
}