`

IO中用ByteArrayOutputStream解决乱码问题

    博客分类:
  • JAVA
 
阅读更多

IO中另外一种防止乱码的方法:使用ByteArrayOutputStream

在创建ByteArrayOutputStream时,会自动创建一个以自动增长的缓存区,当数据读取完后再一起统一写出来,就不会有乱码的问题了

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;

public class ByteArrayInputStreamTest {
    public static void main(String[] args) throws Exception {
        ByteArrayOutputStream out = null;
        InputStream ins = new FileInputStream("test.txt");
        int len = -1;
        out = new ByteArrayOutputStream();
        // 下面的read方法每次读取一个字节,并返回这个字节的int类型
        while ((len = ins.read()) != -1) {
            // 每次写入一个字节,out对象会自动创建一个反冲区,并自动增加大小
            out.write(len);
            System.out.println(out.size());
        }
        out.close();
        ins.close();
        System.out.println(out.toString());
    }
}

 每次写入时打印out对象的长度,可以看到out对象的长度每次增加1,因为每次读取一个字节,这样把所有的数据读取完后再调用toString方法转换成字符就不会出现乱码的问题了

 

但本人在一次客户现场调试接口时,发现生成的字符串存入字符编码为UTF-8的数据库时,重新生成XML文件时会出现乱码的现象,可以将

out.toString();

 改成:

out.toString("utf-8");

 这样重新生成的文件不会出现中文乱码

分享到:
评论

相关推荐

    解决Matlab使用urlread读取中文网页乱码问题-Matlab使用urlread()读取中文网页.doc

    如果以上步骤仍不能解决问题,可能需要考虑使用其他的网络访问库,如`webread`(MATLAB R2014b及以上版本)或第三方工具如`libcurl`接口。在进行任何修改之前,记得备份原始文件,以免出现意外情况。

    IO流 javaio java 流

    - 字节数组流(ByteArrayInputStream/ByteArrayOutputStream):在内存中操作字节数据。 - 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader...

    java_IO.rar

    9. **IO FAQ(05_IO_faq.avi)**:常见问题解答,可能涵盖异常处理、流的关闭、缓冲区大小选择等问题,帮助解决实际开发中遇到的问题。 10. **总结(10_总结.avi)**:最后的视频是对整个IO系列的回顾,总结关键...

    深入分析javaIO的工作机制.doc

    例如,`InputStreamReader`类就是一个重要的桥梁,它可以从字节流中读取字符数据,并允许指定字符集,避免乱码问题的发生。 下面是一段使用`FileReader`读取文件的例子: ```java StringBuffer str = new ...

    Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法

    `ByteArrayOutputStream` 和 `ByteArrayInputStream` 是Java IO包中用于在内存中处理字节流的两个重要类,它们可以帮助我们避免频繁读取配置文件,提高程序性能。 `ByteArrayOutputStream` 是一个输出流,它将数据...

    Java IO流 总结

    转换流可以解决字符集编码问题。 a) 输入流:InputStreamReader---->解码 InputStreamReader是将字节流转换为字符流的输入流,负责将字节流中的数据解码为字符流。 b) 输出流:OutputStreamWriter---->编码 ...

    ByteArrayOutputStream简介和使用_动力节点Java学院整理

    ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。 ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

    commons-io-2.6-bin.zip

    7. 数据源和目标:提供内存中的数据源和目标,如ByteArrayInputStream和ByteArrayOutputStream。 另一个关键组件是"gson-1.7.jar",这是Google提供的一个Java库,用于将Java对象转换为JSON格式,以及将JSON数据转换...

    java 中序列化NotSerializableException问题解决办法

    Java 中序列化 NotSerializableException 问题解决办法 Java 中序列化 NotSerializableException 问题是 Java 开发中常见的问题之一。 NotSerializableException 是 Java 中的一个异常,它发生在尝试序列化一个不...

    深入分析JavaIO的工作机制.doc

    同样地,`FileOutputStream`用于将字节写入文件,`ByteArrayOutputStream`用于将字节写入字节数组。 **组合使用示例**:可以将多个流组合起来使用,比如将对象序列化后通过缓冲输出流写入文件。 ```java ...

    java_io详解

    具体的数据源类如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以及提供装饰功能的类如`BufferedInputStream`、`BufferedOutputStream`、`DataInputStream`、`...

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

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    Io框架与类图

    `FileInputStream`和`FileOutputStream`用于文件的读写,而`ByteArrayInputStream`和`ByteArrayOutputStream`则操作字节数组。`FilterInputStream`和`FilterOutputStream`同样提供过滤功能,例如`...

    Android文件IO操作

    3. **`ByteArrayInputStream` 和 `ByteArrayOutputStream`**:在内存中创建和操作字节数组。 4. **`CharArrayReader` 和 `CharArrayWriter`**:在内存中创建和操作字符数组。 5. **`StringReader` 和 `StringWriter`...

    Java IO

    2. **数据源I/O类**:如 `FileInputStream`、`FileOutputStream`、`ByteArrayInputStream` 和 `ByteArrayOutputStream` 等,它们直接与特定的数据源(如文件或内存)交互。 3. **装饰器I/O类**:如 `...

    io流详解代码

    - `ByteArrayInputStream`和`ByteArrayOutputStream`可以在内存中创建一个字节数组流,用于临时存储数据。 8. **异常处理**: - 在进行IO操作时,必须妥善处理`IOException`。通常,我们使用try-catch块来捕获并...

    JAVA中的IO流简介

    在Java编程语言中,输入/输出(Input/Output,简称IO)流是处理数据传输的核心概念,用于在程序与外部设备、文件系统或其他程序之间进行数据交换。Java提供了丰富的IO流类库,使得数据的读写操作变得既灵活又强大。...

    Java 的 IO流笔记.md

    - **ByteArrayInputStream/ByteArrayOutputStream**:节点流,用于以字节为单位直接操作字节数组。 - **ObjectInputStream/ObjectOutputStream**:处理流,用于以字节为单位直接操作对象。 - **DataInputStream/...

    javaIO详细讲解+详细案例

    ### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于...无论是简单的文件读写还是复杂的网络通信,Java IO流都能提供灵活且高效的解决方案。

    commons-io-1.3.2-sources.jar

    5. **内存中的 I/O**:`StringReader` 和 `StringWriter` 提供了与 String 对象交互的便捷方式,而 `ByteArrayInputStream` 和 `ByteArrayOutputStream` 则允许在内存中直接处理字节数组。 6. **数据转换**:如 `...

Global site tag (gtag.js) - Google Analytics