`
xyheqhd888
  • 浏览: 409262 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

字符流

 
阅读更多

一、字符流:

    1. java.io.Reader和java.io.Writer与其子类等是处理字符流(Character Stream)的相关类。简单地说,就是对流数据以一个字符(两个字节)的长度为单位来处理(0--65535,0x0000--0xffff),并进行适当的字符编码转换处理,即Reader、Writer与其子类可以用于进行所谓纯文本文件的字符读/写。

    2. Reader和Writer类支持Unicode标准字符集,字节流只支持ISO-latin-1 8-bit。在处理流数据时,会根据系统默认的字符编码来进行字符转换,Reader和Writer是抽象类,在进行文本文件的字符读写时真正会使用其子类,子类通常会重新定义相关的方法。

    3. Reader 的子类InputStreamReader转换读入的两个字节为中文字符的示例:

package ysu.hxy;
 
import java.io.*; 
 
public class ReaderDemo {
    public static void main(String[] args) {
        try { 
            PushbackInputStream pushbackInputStream = 
                new PushbackInputStream( 
                         new FileInputStream(args[0])); 
            byte[] array = new byte[2]; 
            int tmp = 0; 
            int count = 0; 

            ByteArrayInputStream byteArrayStream = new ByteArrayInputStream(array);

			//reader会从已读的位数组中取出数据
			InputStreamReader reader = new InputStreamReader(byteArrayStream);

            while((count = pushbackInputStream.read(array))
                                             != -1) {
               // 两个字节转换为整数 
                tmp = (short)((array[0] << 8) | 
                      (array[1] & 0xff)); 
                tmp = tmp & 0xFFFF; 
 
                 // 判断是否为BIG5,如果是则显示BIG5中文字
                if(tmp >= 0xA440 && tmp < 0xFFFF) {
                    System.out.println("BIG5: " + 
                            (char)reader.read());

				 //重置ArrayInputStream的读取光标,下次reader才会再从头重新读取数据
				 byteArrayStream.reset();
                } 
                else { 
                   // 将第二个字节推回流 
                    pushbackInputStream.unread(array, 1, 1); 
                    // 显示ASCII范围的字符
                    System.out.println("ASCII: " + 
                            (char)array[0]); 
                } 
            } 
 
            pushbackInputStream.close(); 
        } 
        catch(ArrayIndexOutOfBoundsException e) {
            System.out.println("请指定文件名称");
        }
        catch(IOException e) { 
            e.printStackTrace(); 
        } 
    }
}

 

分享到:
评论

相关推荐

    Java字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流...

    java字符流操作

    Java字符流操作是Java IO API中的重要组成部分,主要用于处理文本数据,支持各种编码格式的文件读写。在Java中,字符流分为输入流(InputStreamReader、BufferedReader)和输出流(OutputStreamWriter、PrintWriter...

    java字节流和字符流

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

    JAVA 字符流与字节流

    在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...

    java 字符流 讲解

    Java字符流讲解 Java语言中的数据流主要用于处理数据的输入和输出,特别是在处理文件操作时。数据流可以分为字节流(Byte Stream)和字符流(Character Stream)。本讲解主要聚焦于字符流,它是Java IO体系中处理...

    Java字符流和字节流

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

    Java学习IO流小结--字符流

    ### Java学习IO流小结——字符流 #### 知识点概述 在Java中,处理文件和数据流是一项基本而重要的任务。IO流是Java语言中处理输入/输出的重要工具,它包括字节流和字符流两大类。本文将重点讨论字符流的相关概念...

    字节流字符流的使用方法源码+文档

    在Java编程语言中,`字节流`和`字符流`是进行输入/输出操作的基础,主要用于处理数据的传输。这两个概念是Java IO系统的核心,它们允许程序与外部设备(如硬盘、网络、内存等)交换信息。在这个压缩包中,你将找到...

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

    字符流:字符流处理的是Unicode编码的字符,因此一个字符可能占用2个字节。Writer是字符输出流的顶级抽象类,它提供了向字符输出流写入字符的方法。例如,我们可以使用PrintWriter类来方便地输出文本内容: ```java...

    java i/o流读取写入字符流

    读取写入文件,javai/o流字符流 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

    字符流的读写

    字符流的读写......

    字节流字符流

    在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。它们构成了Java I/O系统的核心,用于读写文件、网络通信等场景。字节流和字符流的区别在于处理数据的基本...

    Test 字符流复制粘贴内容.java

    字符流复制粘贴内容 只能复制粘贴纯文本文件 不能复制图片等内容

    java字符流记事本

    java字符流记事本 建议新手看看

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

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

    JAVA字符流加密实验代码报告

    在本实验报告中,我们将深入探讨Java字符流的使用,特别是在文件操作中的应用。Java字符流主要用于处理基于Unicode编码的字符数据,它分为输入流(Reader)和输出流(Writer),用于读取和写入字符数据。 实验的...

    javaIO字符流文件写入总结共1页.pdf.zip

    Java IO字符流是Java平台中用于处理文本数据的重要部分,特别是在进行文件读写操作时。字符流处理单个字符,适合处理基于字符编码(如UTF-8、GBK等)的文本文件。本篇将深入探讨Java IO中的字符流以及如何进行文件...

    字节流字符流练习

    Java提供了两种主要的IO流类型:字节流(Byte Stream)和字符流(Character Stream)。这两个概念是Java IO体系的基础,也是程序员在处理数据传输时经常遇到的工具。本练习文档将帮助你深入理解并熟练掌握这两种流的...

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

    字符流主要由Reader和Writer类构成,它们分别代表输入字符流和输出字符流。例如,FileReader和FileWriter是常用的字符流实现,用于读取和写入文本文件。字符流内部会进行字符编码和解码,因此比字节流更适合处理文本...

Global site tag (gtag.js) - Google Analytics