字符流是处理字符的流,系统中字符的编码有许多种,例如Unicode 、UTF-8 、 UTF-16 、GB2312 GBK等,不同的编码格式其所对应的字节是不同的。
其中java字符采用的编码格式是unicode编码,每个字符占两个字节。
字符流很大情况下主要是用来处理字符的编码转换和文本文件的读取。因此,在对文本文件进行读取操作时,我们必须要清楚的知道所读取的文本文件的编码格式和我们所要写入的文本文件的编码格式,不然将会出现乱码和错误的信息,写入的信息也不利于以后的文件再读取。
字符流读写的代码实现:
读取:
InputStreamReader-------适配器----先取出该文本文件对应的字节流,然后按照该文本的编码格式(比如该文本文件的编码格式为utf-8)将字节流转换为字符流,
最后在转换为java的JVM的编码格式(即unicode)
BufferedReader------------装饰器----为其他Reader提供缓冲区,在读取文本文件中我们主要使用该该类的readLine()函数,来每次读取一行。
写入操作:
OutputStreamWriter------适配器-----先使字符由Unicode码转化为我们要写入文本文件对应的编码格式(比如我们要写入文件的编码格式为utf-8),然后将该编码
格式对应的字节流写入文本文件中
BufferedWriter-------------装饰器-----为其他Writer提供缓冲区,
PrintWriter------------------在写文本文件程序中,我们主要使用该类的格式化输出,以及该类型换行输入函数println()等。
看下面这个简单的例子:
import java.io.*;
public class zifuliu1
{
public static void main(String args[])throws IOException
{
System.out.println("请输入你的岁数");
InputStreamReader in=new InputStreamReader(System.in);//其中System.in 是字节流 ,通过使用InputStreamReader 来将System.in转换为字符流
BufferedReader br=new BufferedReader(in);//然后通过BufferedReader来缓冲输入字符流
String s=br.readLine(); //通过readLine方法来读取字符流
int i=Integer.parseInt(s);//对字符串进行转换,为整形
if(i>18)
System.out.println("成年人");
else
System.out.println("未成年人");
}
}