`
=死神=
  • 浏览: 56760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 位流处理4

    博客分类:
  • Java
阅读更多

PushbackInputStream

    java.io.PushbackInputStream拥有一个PushBack缓冲区,从PushbackInputStream读出数据后,只要PushBack缓冲区没有满,就可以使用unread()将数据推回流的前端

 

    举个使用 PushbackInputStream的例子。假设一个文本文件中同时存储有ASCII码范围的英文字符与BIG5码范围的中文字符。您希望判断出哪些 位置是ASCII而哪些位置是BIG5中文字符的位置,BIG5中文字符使用两个字节来表示一个中文字,而ASCII只使用一个字节来表示英文字符

 

 

    BIG5中文为了与ASCII兼容,低字节范围为0xA4~0xF9,而高字节为0x40~0x7E以及0xA1~0xFE。存储时低字节先存,再存高字节,所以读取时只要先读到字节是在0xA4~0xF9,就表示它可能是一个中文字的前半数据。

 

    为了说明 PushbackInputStream的功能,在范例14.15中一次从文件中读取两个字节,并检查两个字节合并后的整数值是否在0xA440与 0xFFFF之间,这样可以简单地判断其两个字节合并后是否为BIG5码。如果是BIG5码则使用这两个字节产生String实例以显示汉字字符;如果不 在这个范围之内,则可能是个ASCII范围内的字符,您可以显示第一个字节的字符表示,并将读出的第二个字节推回流,以待下一次可以重新读取

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PushbackInputStream;

public class PushbackStreamDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		try {
			PushbackInputStream pushbackInputStream = new PushbackInputStream(
					new FileInputStream(args[0]));
			byte[] array = new byte[2];
			int tmp = 0;
			int count = 0;
			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:" + new String(array));
				} else {
					// 将第二个字节流推回
					if (count == 2) {
						pushbackInputStream.unread(array, 1, 1);
					}
					// 显示ASII范围的字符
					System.out.println("ASCII:" + (char) array[0]);
				}

			}
			pushbackInputStream.close();
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("请指定文件名称");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

假设指定的文本文件test.txt中有以下的文字:这T是e一s个t测试。则执行的结果如下:

java onlyfun.caterpillar. PushbackStreamDemo test.txt

BIG5: 这

ASCII: T

BIG5: 是

ASCII: e

BIG5: 一

ASCII: s

BIG5: 个

ASCII: t

BIG5: 测

BIG5: 试

 

源文件地址:http://hi.baidu.com/mdbing/blog/item/c477a338d81009c7d56225fb.html

分享到:
评论
1 楼 LinuxFans 2009-05-14  
请问LZ,简体中文就是大陆使用的你上面的也使用吗?

相关推荐

    java零基础自学 之 JavaIO流处理

    java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理

    基于Java的视频流处理(原创)

    基本的哈哈镜功能基本实现,通过调用第三方库实现了人脸检测和人脸的图片遮挡。鄙人凭厚脸皮以此项目在创新实践项目课上拿到了100分。

    Java字符流与字节流区别

    Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理...

    java数据流总结

    java数据流总结,java io流总结,节点流和处理流 java数据流总结,java io流总结,节点流和处理流 java数据流总结,java io流总结,节点流和处理流

    Java的异常处理和IO流

    Java的异常处理和IO流

    JAVA IO流技术

    4. Java中流的概念细分 流的方向: 输入流:数据源到程序(InputStream、Reader读进来) 输出流:程序到目的地(OutPutStream、Writer写出去) 处理数据单元: 字节流:按照字节读取数据(InputStream、OutputStream)...

    Java的例外处理和IO流

    Java的例外处理和IO流Java的例外处理和IO流Java的例外处理和IO流Java的例外处理和IO流Java的例外处理和IO流

    java_io流的处理

    本文档能够帮助你了解java io流的处理

    Java流(文件读写操作)

    一、 流的分类 ...• 按照流所处理的数据类型 – 字节流:用于处理字节数据。 – 字符流:用于处理Unicode字符数据。 • 按照流所处理的源 – 节点流:从/向一个特定的IO设备读/写数据的流。(低级流) – 处理

    java_IO流的处理.ppt

    java_IO流的处理.ppt java_IO流的处理.ppt

    Java中文件IO流.pdf

    Java中文件IO流.pdf 学习资料 复习资料 教学资源

    javaIO流原代码

    javaIO流原代码,刚刚开始学习java的同志们可以看看.有问题留言.

    高效处理文件流 java文件

    里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)

    java IO流总结.md

    对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理 2.数据的流向:输入流、输出流 3.流的角色:节点流、处理流 节点流:直接从数据...

    java输入输出流与文件处理

    对java输入输出流与文件处理进行详细的阐述

    java IO流 1. 流的概念 2. 输入流和输出流 3. 字符流、字节流 4. 缓冲流 5. 转换流处理流

    java IO流 1. 流的概念 2. 输入流和输出流 3. 字符流、字节流 4. 缓冲流 5. 转换流处理流

    模拟视频转实时RSTP流,JAVA解析实时RTSP流存储AVI至本地

    模拟视频转实时RSTP流,JAVA解析实时RTSP流存储AVI至本地,内含使用步骤与说明: 主要功能点如下: (1)将本地视频(如:.MP4格式)推送RTSP实时流 (2)实时RTSP流播放 (3)JAVA程序解析RTSP流,并存储至本地...

    Java图片处理类库SimpleImage.zip

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...

    java对I/O流的处理

    java I/O流处理的ppt,详细描述了I/O的各个流,对学习很有帮助!

    完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt

    完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI AWT 事件模型(共27页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI GUI...

Global site tag (gtag.js) - Google Analytics