在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,那么在记事本会显示成一个小黑框。
|