java之将字节数组流转化为字符流来读取

1 读取文件时,如果读取的文件内容为字节数组了。可以还想要将字节数组来转化为readLine的方式来读取。就需要通过字符流来读取了。想要通过readLine来读取,就需要BufferedReader来读取。但是有一个类InputStreamReader就是讲字节数组流转化为字符流。这样就可以将已经读取好的字节数组流转化为字符流了。
如:public void testStreamToReader(String fileString){
try {
FileInputStream fileInputStream=new FileInputStream(new File(fileString));
byte[] bytes=new byte[1024];
int num=-1;
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
while((num=fileInputStream.read(bytes,0,bytes.length))>-1){
byteArrayOutputStream.write(bytes,0,num);
}

byte[] bytes_=byteArrayOutputStream.toByteArray();
System.out.println(bytes_.length);
String neirong__=new String(bytes_,"UTF-8");
bytes_=neirong__.getBytes();
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(bytes_);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(byteArrayInputStream));//这就是将字节数组流转化为字符流来使用了。
String neirong_=null;
while((neirong_=bufferedReader.readLine())!=null){
String neirong=neirong_;
System.out.println(neirong);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


解析:InputStreamReader类就可以满足,将字节数组流转化为字符流来使用。这样就可以使用readLine方法了。


2 如果需要解析的文件中带有中文,则解析时需要先解析为字节数组,然后通过字节数组转化为字符串,然后通过字符串再转化为字节数组,这样通过InputStreamReader将字节数组流转化为字符流,就可以一行一行的来解析了,也可以解析包括中文。
如:public void testStreamToReader(String fileString){
try {
FileInputStream fileInputStream=new FileInputStream(new File(fileString));
byte[] bytes=new byte[1024];
int num=-1;
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
while((num=fileInputStream.read(bytes,0,bytes.length))>-1){
byteArrayOutputStream.write(bytes,0,num);
}

byte[] bytes_=byteArrayOutputStream.toByteArray();
System.out.println(bytes_.length);
String neirong__=new String(bytes_,"UTF-8");//先转为字符,字符集为UTF-8
bytes_=neirong__.getBytes()//在转化为字符,这样就能解析中文了。
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(bytes_);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(byteArrayInputStream));//这就是将字节数组流转化为字符流来使用了。
String neirong_=null;
while((neirong_=bufferedReader.readLine())!=null){
String neirong=neirong_;
System.out.println(neirong);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值