字符流(No.3)

今天主要是字符流:

Reader

|--InputStreamReader

|--FileReader:专门用于处理文件的字符读取流对象。

Writer

|--OutputStreamWriter

|--FileWriter:专门用于处理文件的字符写入流对象。

简单的运用:就是把用字节流做的记事本(保存的功能)改编为用字符流实现。主要代码如下:

字节流:

public void actionPerformed(ActionEvent e) {//添加监听器

if (e.getSource() == baocun) {

save();//调用

}

}

public void save() {

try {

FileOutputStream fos = new FileOutputStream("res/like.txt");

//这里有一个小细节:当指定绝对路径是,定义目录分隔符有两种方式:

1、反斜线 但是一定要写两个。“res\\like.txt”2、斜线 写一个即可(如上)

BufferedOutputStream bos = new BufferedOutputStream(fos);

DataOutputStream dos = new DataOutputStream(bos);

dos.writeUTF(wenben.getText());

dos.close();

bos.close();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

字符流:

public void actionPerformed(ActionEvent e) {

if (e.getSource() == baocun) {// 获取通过 setSystemId 设置的系统标识符。

fd = new FileDialog(f, "Save", FileDialog.SAVE);// 储存

fd.setVisible(true);

file1 = new File(fd.getDirectory(), fd.getFile());

//获取此文件对话框的目录//根据指定的路径中的文件返回相应的 File 对象

save();

}

}

FileWriter fw = null;

public void save() {

try {

fw = new FileWriter(file1);//注意:构造函数:在写入流对象初始化时,必须要有一个存储数据的目的地。

fw.write(wenben.getText());

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

fw.close();

} catch (Exception e2) {

// TODO: handle exception

e2.printStackTrace();

}

}

}

在这两段代码中不同的是储存的位置不一样,所以监听器中的代码有很大的差异,但同时都必要调用save()函数,在save()函数中由于字符流与字节流的代码迥然不同。

在字符流的代码中有一个小的细节需要我们注意,那就是try…catch…必须写成它的完全体。

另外关于BufferedWriter和BufferedReader字符流的缓冲区,

BufferedWriter的特有方法:newLine();跨平台的换行符。

BufferedReader的特有方法:readLine():一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回,当读到末尾时,返回null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值