`
fireflyjava
  • 浏览: 186279 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PushbackInputStream 读取GBK字符时,会将双引号变成单引号

    博客分类:
  • Java
阅读更多
如: <!---->xml version="1.0" encoding="GBK"
PushbackInputStream 读取后,会变成:  <!---->xml version='1.0' encoding='GBK'
而UTF-8不会!
java 代码
  1. public static void  testStream() throws IOException{   
  2.     int MAX=2048;   
  3.     URL url=new URL("http://www.open-open.com/indexrss.xml");   
  4. /       URL url=new URL("http://www.blogjava.net/kukoo/Rss.aspx");   
  5.     InputStream input=url.openStream();   
  6.     byte bytes[]=new byte[MAX];   
  7.     PushbackInputStream bfInput=new PushbackInputStream(input);   
  8.     OutputStream out=new FileOutputStream(new File("e:/temp/rss.xml"));   
  9.     BufferedOutputStream bfOut=new BufferedOutputStream(out);   
  10.     int read=0;   
  11.     int totalBytes=0;          
  12.     int offset = 0;   
  13.     int max = MAX;   
  14.     while((read=bfInput.read(bytes,offset,max))!=-1&&offset
  15.         totalBytes+=read;   
  16.         bfOut.write(bytes, offset, max);   
  17.         offset+=read;              
  18.         max-=read;             
  19.         System.out.println("read:"+read+"total:"+totalBytes);   
  20.     }   
  21.        
  22.     System.out.println(read+":"+totalBytes);   
  23.     bfOut.flush();   
  24.     bfOut.close();   
  25.     bfInput.close();   
  26.     Reader reader=new InputStreamReader(new ByteArrayInputStream(bytes,0,offset));   
  27.     BufferedReader bufferReader=new BufferedReader(reader);   
  28.     String longer=bufferReader.readLine();   
  29.     System.out.println(""+longer);   
  30. }  
分享到:
评论

相关推荐

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

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

    Java解决UTF-8的BOM问题

    在某些情况下,BOM可能会引起问题,例如在读取文本文件时,可能会导致额外的乱码字符出现在文件的开头。本文将深入探讨如何使用Java来处理带有BOM的UTF-8文件。 首先,`UnicodeInputStream`和`UnicodeReader`是Java...

    java中的回退流1

    在本例中,我们读取到逗号后,再次调用`read()`方法,此时会返回被推回的逗号,从而实现将逗号替换为"(回退,"的逻辑。 运行结果展示了这种替换效果:“hello(回退,) rollenholt”。这表明`PushbackInputStream`成功...

    JDK_API_1_6

    InputStreamReader InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。 LineNumberInputStream 已过时。 此类错误假定字节能充分表示字符。 LineNumberReader 跟踪...

    JAVA输入与输出 java流基本流程图

    - `PushbackInputStream`:允许未读取的字节回推到流中。 - `BufferedInputStream`:提高输入流的性能,通过缓冲区读取数据。 - `LineNumberInputStream`:跟踪输入流中的行号。 2. **字节输出流体系结构**: -...

    java之精髓IO流

    - **PushbackInputStream**:允许在读取数据后将其推回输入流中再次读取,适用于解析器等场景。 通过这些扩展类,开发者可以根据实际需求灵活地选择合适的Stream进行数据处理,从而提高程序的灵活性和效率。

    Java,彻底明白Java语言中的IO系统

    在实际应用中,经常需要在字节流和字符流之间进行转换,例如从字节流中读取字符数据或者将字符数据写入字节流中。Java IO系统提供了以下几种转换流: - `InputStreamReader`:将字节流转换为字符流。 - `...

    JAVA中的IO流简介

    - 特殊子类如`LineNumberInputStream`、`DataInputStream`、`BufferedInputStream`、`PushbackInputStream`等,提供额外功能如行号追踪、数据格式读取优化、缓冲区读取和数据回退等。 - **OutputStream**:用于...

    彻底明白 Java 语言中的IO系统

    - **StringReader**: 将字符串对象转换为输入流,按字符读取。 - **FileReader**: 用于读取文件中的文本数据。 - **PipedReader**: 用于线程间基于字符的通信。 ###### 输出Stream - **CharArrayWriter**: 类似于...

    输入与输出

    - 字符流在读取和写入时通常比字节流慢,因为涉及到字符编码的转换。然而,字符流的一次操作可以读取更多的信息(16位),因此在某些情况下可以弥补这种转换带来的开销。 4. **类名约定**: - 字节流类名通常以`...

    java IO 类层次图

    - `PushbackInputStream`: 允许将读取的数据重新推回到输入流中。 - `DataInputStream`: 提供了按基本类型读取数据的方法。 - `GZIPInputStream`: 支持GZIP格式的数据解压。 - `ZipInputStream`: 支持从ZIP文件...

    JAVA输入输出流实验报告

    当出现文件找不到或无法读取等情况时,程序会抛出此类异常,我们需要通过`catch`块来妥善处理。 通过这两个实验,我们可以了解到Java IO流的基本使用步骤:创建输入流对象,创建对应类型的输出流对象,然后通过读写...

    Java IO流几种经典使用方式

    字符流在处理时会考虑编码问题,使得可以正确处理各种语言的文本数据。 - **InputStream**: - `CharArrayReader`:类似于`ByteArrayInputStream`,但处理的是字符数组。 - `StringReader`:基于字符串创建输入流...

    Java IO流文档

    - **PushbackInputStream**:允许将数据推回到流中,常用于编译器开发。 ##### 2.2.2 用于封装以字符为导向的Input 接下来的部分将继续讨论用于封装以字符为导向的输入流的类,如`BufferedReader`等,以及如何使用...

    Java IO口解析(初级)

    在处理文本数据时,有时需要在字节流和字符流之间进行转换。 - **`InputStreamReader`**:将字节流转换为字符流。 - **`OutputStreamWriter`**:将字符流转换为字节流。 #### 六、高级IO流——过滤器流 过滤器流...

    教你彻底明白Java的IO系统

    - **PushbackInputStream**:允许将已经读取的某个字节重新推回到流中。 ##### 2. 过滤输出流 - **DataOutputStream**:为基本数据类型如int、char等提供写入功能。 - **BufferedOutputStream**:与`...

    java的IO流操作

    - **`PushbackInputStream`**:允许将一个或几个读取的字节放回输入流中。 ##### 2. FilterOutputStream及其子类 - **`DataOutputStream`**:用于向`OutputStream`写入基本数据类型。 - **`BufferedOutputStream`*...

Global site tag (gtag.js) - Google Analytics