相关文章推荐

java如何实现字节流与字符流之间的转换?

2 年前 · 来自专栏 java phyton matlab编程

在I/O流当中提供了字节流和字符流两种形式,但是有时需要将字节流转化为字符流,那么怎样实现两者之间的转换呢?

在jdk中,提供了两个类用于实现将字节流转化为字符流,分别为InputStreamReader和OutputStreamWriter。InputStreamReade是Reader的子类,它可以将一个字节输入流转化为字符输入流,方便直接读入字符。OutputStreamWriter是Writer的子类,它将字节输出流转化为字符输出流,方便直接写入字符。

点击下方链接,免费获取java编程资料,先来先得!

接下来将通过一个案例来讲解如何将字节流转化为字符流,为了提高在程序的运行效率,可以通过BufferedReader和BufferedWriter来实现工作.

具体代码如下:

import Java.io: Permanent & Contract Remote Work. .*;

/********************************

项目:字节流与字符流之间的转换---转换流

方法:InputStreamReader/OutputStreamWriter

时间:2021.1.30

*****************************/

public class RunStringTemp {

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

//创建字节流输入对象,获取需要的文件

FileInputStream in=new FileInputStream("C:\\Users\\asus\\Desktop\\out.txt");

//将字节流输入对象转化为字符流输入对象

InputStreamReader isr=new InputStreamReader(in);

//创建字符输入流缓冲对象

BufferedReader br=new BufferedReader(isr);

//创建字节流输出对象,指定目标文件

FileOutputStream out=new FileOutputStream("C:\\Users\\asus\\Desktop\\copy2.txt");

//将字节输出流转化为字符输出流

OutputStreamWriter osw= new OutputStreamWriter(out);

//创建字符输出流缓冲对象

BufferedWriter bw=new BufferedWriter(osw);

//定义一个字符串变量

String length=null;

//通过循环判断是否读到文件的末尾

while((length=br.readLine())!=null) {

//输出读取到的文件

bw.write(length);

bw.newLine();

}

//关闭流

br.close();

bw.close();

}


}

输出结果:

从上述可以看到一个copy2的文件与out.txt内容一样,说明拷贝完成。

从而实现了将字节流转化为字符流并实现了文本的拷贝功能。

点击下方链接,免费获取python编程资料,先来先得!

需要注意的是,在使用转换流的过程之中,只针对操作文本文件的字节流进行转换,当字节流操作的是字节码内容的文件(如图片、视频等),此时的数据就会发生丢失!

欢迎关注知乎,留言咨询!

 
推荐文章