在IO流中,按数据传输的方式可分为两种,一个是字节流(InputStream输入流是读,OutputStream输出流是写),另一个是字符流(Reader,Writer),在平时的内存和硬盘以及图片等之中,都是用字节进行存储,所以,字节流用的比较广泛,但是有时候需要对文本进行处理,这就需要使用到字符流了,其实字符流对象就是在字节流的基础上加入了一些码表,对于码表,最开始美国人为了表示自己的字符a,b,c,d...,设计ASCII码表(A-65,a-97),随后,中国人为了表示自己的汉字设计了GB2312(其中只是对汉字进行了编码),国际化通用的是Unicode码表(他是对世界所有国家的语言进行了编码),Unicode码表都是用两个字节表示的字符,后来经过优化以后,形成了UTF-8码表,他先是用一个字节表示,当一个表示不下的时候用两个字节,在表示不下的时候用三个字节,由于UTF-8是对世界所有语言的一个编码,所以对于同一个数字,它与GB2312所对应的字符也不一样,例如100,它在GB2312可能对应汉字“二”,但是在Unicode中他可能对应的是一个日文,所以,使用GB2312写入的编码,使用Unicode读出时就会乱码,因此,在java中出现了字符流,他可以在内部柔和编码表,你可以指定它查GB2312还是UTF-8,因此,字符流对象就是在字节流的基础上加入了一些码表。

 

1、字符流Writer

  1.1 、在硬盘上创建一个文件,这就用到了FileWriter,它在InputeStreamWriter里面

java是通过调用window里的写操作往文件里写内容,所以,当写完了之后,java也必须要关闭资源

package com.news.writer;
import java.io.*;
public class Writer1{
public static void main(String [] args) throws IOException{
//处理异常的方法有两种,一种是try,另一种是throws抛出
//在使用FileWriter的时候,FileWriter对象一被创建,必须有一个被操作的文件存在
//而且该文件会被创建在当前目录下,如果文件已经存在,则被覆盖
FileWriter file = new FileWriter("Demo.txt");
//调用Writer方法,将数据写入到流中(留在内存中,即写入到内存中)
file.write("asdvasdvas");
//刷新缓存区,将缓存中的内容写入到文件中
file.flush();
//可以继续添加
file.write("覆盖黄金分割");

file.flush();
//如果使用close方法,则不能继续添加数据了
file.write("asdvasdvas");
//关闭流资源,但是在关闭之前会刷新缓存区
file.close();
//可以继续添加
file.write("覆盖黄金分割");

file.flush();
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.2、IO异常的基本处理方式

package com.news.writer;
import java.io.*;
public class Writer1{
//IO异常的处理方式,抛是不合适的
//凡是能与数据发生交互的都会发生IO异常,读、写和创建
private static FileWriter file = null;
public static void main(String [] args){
try{
file = new FileWriter("Demo.txt");
file.write("123456");

}catch(IOException e){
System.out.println(e.toString());
}finally{
//coloe方法必须被执行,所以放在finally里(必须被执行的操作都应放在finally里)。
//例如:我们在write()中写入了大量的数据,当硬盘都放不下的时候,
//就会报异常,异常被IOException捕获处理掉了,此时,close方法并没有执行,
//这是系统的这个资源海继续存在,所以将close放在了finally中
//
//close也必须进行异常处理
try{
//如果创建FileWriter对象的时候出现了异常的话,那么file就是个空对象,
//则file.close()时,就会出现空指针异常NollPiontException.
if(file != null)
file.close();
}catch(IOException e){
System.out.println(e.toString());
}
}

}
}

 

 

 

在windows系统里,\r\n来表换行,热在linux系统中,\n来表换行,如果在windows系统中只写了\n,那么在记事本会显示成一个小黑框。

posted on 2013-12-24 21:39  001渴望成功  阅读(221)  评论(0)    收藏  举报