java字符流的好处_java字符流-----我的理解

一、陈述

字符流是处理字符的流,系统中字符的编码有多种,包括Unicode、UTF-8、UTF-16、GB2312、GBK等,不同的编码格式其所对应的字节是不同的,

其中java中字符采用的编码格式是Unicode编码,每个字符占两个字节。在中文Windows操作系统中的默认编码格式是GBK。

字符流在很大情况下主要是用来处理字符的编码转换和文本文件的读取。

例如:

在对文本文件进行读写操作时,我们必须要清楚的知道我们所读取的文本文件的编码格式和我们要写入文本文件的编码格式,否则我们读取的文件信息

将会是乱码或错误的信息等,写入的信息也不利于以后该文件再读取。

二、字符流读写的代码实现:

读取:

InputStreamReader-------适配器----先取出该文本文件对应的字节流,然后按照该文本的编码格式(比如该文本文件的编码格式为utf-8)将字节流转换为字符流,

最后在转换为java的JVM的编码格式(即unicode)

BufferedReader------------装饰器----为其他Reader提供缓冲区,在读取文本文件中我们主要使用该该类的readLine()函数,来每次读取一行。

写入操作:

OutputStreamWriter------适配器-----先使字符由Unicode码转化为我们要写入文本文件对应的编码格式(比如我们要写入文件的编码格式为utf-8),然后将该编码

格式对应的字节流写入文本文件中

BufferedWriter-------------装饰器-----为其他Writer提供缓冲区,

PrintWriter------------------在写文本文件程序中,我们主要使用该类的格式化输出,以及该类型换行输入函数println()等。

实例程序如下:

package gyf.com;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.nio.charset.Charset;

public class Test1 {

/**

* @param args

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

Test1 test1=new Test1();

test1.copy("d:\\群硕工作.txt", null, "d:\\aa1.txt", "utf-8");

}

/拷贝函数

public void copy(String filepathString,String encodeString,String toFilePathString,String encodString2){

File formFile=new File(filepathString);

InputStreamReader iReader=null;

BufferedReader bReader=null;

File toFile=new File(toFilePathString);

OutputStreamWriter oWriter=null;

BufferedWriter bWriter=null;

PrintWriter pWriter=null;

try {

if (encodeString!=null) {

iReader=new InputStreamReader(new FileInputStream(formFile),encodeString);

}else {

iReader=new InputStreamReader(new FileInputStream(formFile));

}

bReader=new BufferedReader(iReader);

if(encodString2!=null){

oWriter=new OutputStreamWriter(new FileOutputStream(toFile),encodString2);

}else{

oWriter=new OutputStreamWriter(new FileOutputStream(toFile),encodString2);

}

bWriter=new BufferedWriter(oWriter);

pWriter=new PrintWriter(bWriter);

String string=bReader.readLine();

while(string!=null){

pWriter.println(string);

System.out.println(string);;

string=bReader.readLine();

}

} catch (UnsupportedEncodingException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

bReader.close();

pWriter.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值