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

来源:互联网 发布:淘宝省钱机器人有诈吗 编辑:程序博客网 时间:2024/06/05 14:22
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();
}
}
原创粉丝点击