`
chenming47
  • 浏览: 94270 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java IO 字节流与字符流

阅读更多

流是一个有序的字节或字符序列,可作为一个输入源,也可作为一个输出的目的地。

 
字节流以字节为单位输入输出,字节流类名含有stream;

 

字符流以字符为单位输入输出,字符流类名含有reader或writer.

 

为了通用性,java中字符是16位的unicode字符,所以8位的字节流必须和16位的字符流进行转换。

 

字节流到字符流的转换使用InputStreamReader类:


public InputStreamReader(InputStream in);
public InputStreamReader(InputStream in,String encoding);

 

字符流到字节流的转换使用OuputStreamWriter类:

 
public OuputStreamWriter(OnputStream in);
public OnputStreamWriter(OnputStream in,String encoding);

 


Reader和Writer类允许用户在程序中无缝的支持国际字符集,如果要读取的文件是别国语言,要使用字符流。

JavaI/O字节流与字符流就是java实现输入/输出数据。

 

字节流是一个字节一个字节的输入/输出数据 (两个字节组成一个汉字)所以在用字节流读一串汉字时会出现乱码问题,可采用字符流进行读取。

 


同样字符流是一个字符一个字符的输入/输出数据(一个字符=两个字节)所以用字符流读一串汉字可以解决乱码问题,同时它也兼顾了英文,这是由unicode的编码规则决定的,因为中文的unicode字符有特殊标识。

 

 

 读取: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(File file), "UTF-8"));

 

写入: BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(File file), "UTF-8"));

 

不包BufferedWriter和BufferedReader一层,也可以达到解决中文乱码问题的目的.

 

参考下面J2SE6中关于 InputStreamReader 和 OutputStreamWriter 的解析

*************************************************************

public class InputStreamReader extends Reader

  InputStreamReader 是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

  每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

  为了达到最高效率,可考虑在BufferedReader内包装InputStreamReader。例如:

  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

*******************************************************************

public class OutputStreamWriter extends Writer

  OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。

  每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给write() 方法的字符没有缓冲。

  为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:

  Writer out = new BufferedWriter(new OutputStreamWriter(System.out));  

分享到:
评论

相关推荐

    Java IO 字节流 字符流

    Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...

    Java IO字符流和字节流

    ### Java IO字符流和字节流详解 #### 一、引言 在Java编程中,输入输出(简称IO)操作是十分重要的一个方面。通过IO操作,我们可以读取文件、网络数据、用户输入等,也可以将数据写入到文件、网络、控制台等。Java...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    Java字节流与字符流的介绍.pdf

    Java 字节流与字符流的介绍 Java 中的流操作可以分为两种:字节流和字符流。字节流是指以 byte 为单位进行读写操作的流,而字符流是指以 char 为单位进行读写操作的流。 字节流的介绍 字节流的所有读操作都继承自...

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    本教程将详细介绍Java IO中的字节流、字符流、缓冲流以及转换流,并通过IODemo实例来展示它们的用法。 ### 1. 字节流 字节流是Java中最基础的流类型,用于处理以字节为单位的数据。字节流分为输入流(InputStream...

    io流详解,字符流和字节流代码

    本文件包“io流详解,字符流和字节流代码”显然是针对Java IO流的深入学习资源,包含了代码示例和可能的可视化解释。 IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理的是8位的数据...

    Java字符流和字节流

    ### Java字符流和字节流详解 #### 一、引言 在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流...

    java字节流和字符流

    Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...

    java字节流和字符流[整理].pdf

    转换流:在字节流和字符流之间,Java提供了解决两者不兼容问题的转换流,即InputStreamReader和OutputStreamWriter。InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符...

    JAVA_字节流和字符流

    在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。字节流主要用于处理任何类型的二进制数据,如图片、音频、视频等,而字符流则专为处理基于Unicode编码的...

    IO流 javaio java 流

    Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又可以进一步细分为输入流(InputStream/Reader)和输出流(OutputStream/Writer)...

    javaIO流javaIO流javaIO流

    Java IO流体系结构是基于“流”的概念,流是一组有序的数据序列,可以是字节流或字符流。Java IO库包含了大量类和接口,它们分为四类主要流:字节流(Byte Streams)、字符流(Character Streams)、对象流(Object ...

    IO流学习(字节流 字符流 文本流)!

    总的来说,IO流是Java编程中不可或缺的一部分,理解和熟练运用字节流、字符流和文本流能帮助我们高效地处理数据输入和输出,为各种复杂的应用场景提供支持。在实际开发中,要根据数据类型和需求选择合适的流,并利用...

    Java io输入输出流及字符集

    Java的IO(Input/Output)系统是其核心特性之一,为程序处理数据的输入与输出提供了强大而灵活的工具。本文将深入探讨Java中的输入输出流以及字符集的相关知识点。 一、Java IO流概述 Java的IO流模型是基于管道的...

    java io流 案例

    Java IO库提供了丰富的类和接口来支持不同类型的流,包括字节流、字符流、对象流、缓冲流、转换流以及过滤流等。 字节流(Byte Stream)是处理原始二进制数据的流,分为输入流和输出流。InputStream和OutputStream...

    Java基础11-(字节流、字符流)

    Java的IO流是按照数据的流向分为输入流和输出流,按照数据类型分为字节流和字符流。字节流处理的是二进制数据,适用于任何类型的文件,包括文本文件和非文本文件(如图片、音频、视频等)。字符流则用于处理字符数据...

    JavaIO字节输出流的总结共6页.pdf.zip

    Java IO字节输出流是Java平台中用于处理数据输出的核心部分,它允许程序将字节数据写入到各种目标,如文件、网络连接或者内存缓冲区。在Java中,字节输出流通常与字节输入流配合使用,完成数据的读取和写入操作。...

    Java IO流 总结

    在Java IO流中,节点流是指离数据源或程序最近的流处理流,主要有两种类型:字节流和字符流。字节流可以处理一切类型的数据,如纯文本、音频、视频等,而字符流只能处理纯文本数据。 2. 字节流: 字节流是Java IO...

Global site tag (gtag.js) - Google Analytics