IO封装和相关实例,学习的内容依旧是数据流部分,分装 FileInputStream,BufferedInputStream,DataInputStream 三种类型的嵌套缓冲等等。老师留的作业是一个记事本的输出输入,虽然要求实现的功能并不多,但是我尽自己能力都实现了,发现了很多学习不足之处,包括 GUI 的监听部分,以前停留在概念层面的东西在今天的实践当中清晰起来,包括windowsClosing() 的写法也熟悉了很多。这个今天的作业代码: import java.awt.FileDialog;
publicclasswenben extends Frame implements ActionListener {
//添加
TextArea ta;
MenuBar mb;
Stringfile=”";
FileDialogfd_load;
FileDialogfd_save;
MenuFile,Edit,Format,Help;
MenuItemmiNew,miOpen,miSave,miExit,miSaveAs,miFont;
public wenben(){
super(” 记事本 “);
ta =newTextArea(“”,200,300);
mb = newMenuBar();
File = newMenu(” 文件 “);
Edit = newMenu(” 编辑 “);
Format = newMenu(” 格式 “);
Help = newMenu(” 帮助 “);
miNew = newMenuItem(” 新建 “);
miOpen = newMenuItem(” 打开 “);
miSave = newMenuItem(” 保存 “);
miExit = newMenuItem(” 退出 “);
miSaveAs = newMenuItem(” 另存为 “);
miFont = newMenuItem(” 字体 “);
File.add(miNew);
File.add(miOpen);
File.add(miSave);
File.add(miSaveAs);
File.add(miExit);
Edit.add(miFont);
mb.add(File);
mb.add(Edit);
mb.add(Format);
mb.add(Help);
setMenuBar(mb);
this.add(ta);
miOpen.addActionListener(this);
miSave.addActionListener(this);
miSaveAs.addActionListener(this);
miExit.addActionListener(this);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvent e){
System.exit(0);
}
});
fd_load =newFileDialog(this,” 打开文件”,FileDialog.LOAD);
fd_save = newFileDialog(this,” 保存文件 “,FileDialog.SAVE);
}
public voidactionPerformed(ActionEvente){
String s =e.getActionCommand();
if(s.equals(“打开 “)){
fd_load.setVisible(true);
String d =fd_load.getDirectory();
String f =fd_save.getFile();
if((d!=null)&&(f!=null)){
file=d+f;
loadFile();
}
}elseif(s.equals(” 保存 “)){
if((file==null)||file.equals(“”)){
saveFileAs();
}else{
saveFile();
}
}elseif(s.equals(” 另存为 “)){
saveFileAs();
}
elseif(s.equals(” 退出 “)){
System.exit(0);
}
}
public voidloadFile(){
ta.setText(“”);
this.setTitle(“记事本 “+file);
try{
BufferedReaderbr = newBufferedReader(new FileReader(file));
String s =br.readLine();
while(s!=null){
ta.append(s+”\n”);
s=br.readLine();
}
br.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
public voidsaveFile(){
String content =ta.getText();
try{
PrintWriter pw =newPrintWriter(new FileWriter(file+”.TXT”));
pw.println(content);
pw.close();
}catch(IOExceptionie){
ie.printStackTrace();
}
}
public voidsaveFileAs(){
fd_save.setVisible(true);
String f =fd_save.getDirectory();
String d =fd_save.getFile();
if((f!=null)&&(d!=null)){
file=f+d;
saveFile();
setTitle(” 记事本 –”+file);
}
}
public staticvoid main(String[] args){
wenben tm = newwenben();
tm.setSize(300,200);
tm.setLocation(300,200);
tm.setVisible(true);
}
}