程序设计笔记2:将聊天信息同步保存到磁盘文件。
设计思想:新增一个文件操作类,完成文件在磁盘方面的读写功能,并对外提供保存给定字符串的功能。
知识点:字符流磁盘文件保存技术和多程序文件技术。
重点学习:FileOutputStream类,PrintWriter类。
(1)新增一个文件保存类FileWrite,负责文件操作有关功能:
基本功能:用来保存给定的字符串内容,见FileWrite代码。
(2)在IOFrame类中定义并实例化FileWrite类(如图1),在发送按钮中添加:
FileWrite.append(new Date()+msg);//保存聊天信息到磁盘文件.(如图2)
(3)在退出按钮中添加:
FileWrite.close();(如图3)
图1.
图2.
图3.
图4 事件序列图
完整代码:
图123代码需在笔记1的文件添加,然后运行笔记1的文件。
效果:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package basicIO;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import javax.swing.JFileChooser;
/**
*
* @author 87253
*/
public class FileWrite {
private PrintWriter pw=null;
public FileWrite(){//定义构造方法
//使用SAVE AS文件对话框命名文件.
JFileChooser jfc=new JFileChooser();
jfc.setCurrentDirectory(new File(""));
jfc.showSaveDialog(null);
File fileName=jfc.getSelectedFile();
//或直接指定文件名及保存位置.
// File fileName=new File("C:\\Users\\87253\\Documents\\NetBeansProjects\\JavaApp\\ch1\\work.txt");
try {
//新建并打开一个输出文件.
FileOutputStream fw=new FileOutputStream(fileName,true);
pw=new PrintWriter(fw);//装饰成字符型输出流.
} catch (FileNotFoundException ex) { }
}
//定义2个对外的方法.
public void append(String msg){//保存给定的字符串.
pw.println(msg);//输出msg到磁盘文件末尾,并添加行结束符
pw.flush();//将所有缓存一次输出,不加的话数据可能在缓存中还没传输过去
}
public void close(){
pw.close();//关闭该磁盘文件,清空缓冲区
}
}