javaIO——字节-字符转换流

约定不等于承诺〃 2022-05-28 09:35 436阅读 0赞

OutputStreamWriter和InputStreamReader

在整个IO包中,实际上就分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。

  • OutputStreamWriter:Writer的子类,将输出的字符流转换成字节流,即:将一个字符流的输出对象转换成字节流的输出对象。
  • InputStreamReader:Reader的子类,将输入的字节流转换为字符流,即:将一个字节流的输入对象转换为字符流的输入对象。

转换步骤:

如果以文件操作为例,在内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存到文件中,读取的时候需要将读入的字节流通过InputStreamReader变为字符流。

20180402231844167

在OutputStreamWriter中需要一个字节流的对象:OutputStreamWriter(OutputStream out)

在InputStreamReader中需要一个字节流的对象:InputStreamReader(InputStream in)

public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
File f = new File(“f:” + File.separator + “test.txt”);
Writer out = null;//字符输出流
out = new OutputStreamWriter(new FileOutputStream(f));//字符流转换成字节流
out.write(“hello world!!!”);
out.close();
}

}

读的时候,也可以使用字符流的形式读取字节流文件。

public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
File f = new File(“f:” + File.separator + “test.txt”);
Reader input = null; //字符输入流
input = new InputStreamReader(new FileInputStream(f));//将字节流转换成字符流
char[] c = new char[1024];
int len = input.read(c);
input.close();
System.out.println(new String(c,0,len));
}

}

但是,以上是以文件操作为例,因为OutputStreamWriter接受的类型是OutputStream,只要是字节输出流都可以使用字符的形式操作,而InputStreamReader接受的类型是InputStream,只要是字节输入流都可以使用字符的输入流操作。

虽然以字符的输出流操作了字节的输出流,但是还是字节输出,而字符的输入流,虽然以字符操作,但实际上还是使用的字节流,也就是说,传输或从文件中读取数据的时候,文件中真正保存的是字节。

总结:

操作的终端实际上都是以字节的形式进行的。

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 javaIO

    IO流 文件--基本概念 文件是数据源(保存数据的地方)的一种,比如大word文档、jpg文件、MP4文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张

    相关 JavaIO

    IO流 IO流的分类: 1)按方向划分: a.输入流:读取数据 b.输出流:写输出数 2)按数据类型分: a.字节流(图片文件,音频,视频等等....使用

    相关 JavaIO

    > IO流分为六种概念:输入流、输出流、字节流、字符流、节点流和处理流。 > 可以方便地实现数据的输入/输出操作。 > 不同的输入/输出源(键盘、文件、网络连接等)抽象