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");
这样重新生成的文件不会出现中文乱码
相关推荐
如果以上步骤仍不能解决问题,可能需要考虑使用其他的网络访问库,如`webread`(MATLAB R2014b及以上版本)或第三方工具如`libcurl`接口。在进行任何修改之前,记得备份原始文件,以免出现意外情况。
- 字节数组流(ByteArrayInputStream/ByteArrayOutputStream):在内存中操作字节数据。 - 对象流(ObjectInputStream/ObjectOutputStream):用于序列化和反序列化Java对象。 2. 字符流: - 字符输入流(Reader...
9. **IO FAQ(05_IO_faq.avi)**:常见问题解答,可能涵盖异常处理、流的关闭、缓冲区大小选择等问题,帮助解决实际开发中遇到的问题。 10. **总结(10_总结.avi)**:最后的视频是对整个IO系列的回顾,总结关键...
例如,`InputStreamReader`类就是一个重要的桥梁,它可以从字节流中读取字符数据,并允许指定字符集,避免乱码问题的发生。 下面是一段使用`FileReader`读取文件的例子: ```java StringBuffer str = new ...
`ByteArrayOutputStream` 和 `ByteArrayInputStream` 是Java IO包中用于在内存中处理字节流的两个重要类,它们可以帮助我们避免频繁读取配置文件,提高程序性能。 `ByteArrayOutputStream` 是一个输出流,它将数据...
转换流可以解决字符集编码问题。 a) 输入流:InputStreamReader---->解码 InputStreamReader是将字节流转换为字符流的输入流,负责将字节流中的数据解码为字符流。 b) 输出流:OutputStreamWriter---->编码 ...
ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。 ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
7. 数据源和目标:提供内存中的数据源和目标,如ByteArrayInputStream和ByteArrayOutputStream。 另一个关键组件是"gson-1.7.jar",这是Google提供的一个Java库,用于将Java对象转换为JSON格式,以及将JSON数据转换...
Java 中序列化 NotSerializableException 问题解决办法 Java 中序列化 NotSerializableException 问题是 Java 开发中常见的问题之一。 NotSerializableException 是 Java 中的一个异常,它发生在尝试序列化一个不...
同样地,`FileOutputStream`用于将字节写入文件,`ByteArrayOutputStream`用于将字节写入字节数组。 **组合使用示例**:可以将多个流组合起来使用,比如将对象序列化后通过缓冲输出流写入文件。 ```java ...
具体的数据源类如`FileInputStream`、`FileOutputStream`、`ByteArrayInputStream`、`ByteArrayOutputStream`等,以及提供装饰功能的类如`BufferedInputStream`、`BufferedOutputStream`、`DataInputStream`、`...
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
`FileInputStream`和`FileOutputStream`用于文件的读写,而`ByteArrayInputStream`和`ByteArrayOutputStream`则操作字节数组。`FilterInputStream`和`FilterOutputStream`同样提供过滤功能,例如`...
3. **`ByteArrayInputStream` 和 `ByteArrayOutputStream`**:在内存中创建和操作字节数组。 4. **`CharArrayReader` 和 `CharArrayWriter`**:在内存中创建和操作字符数组。 5. **`StringReader` 和 `StringWriter`...
2. **数据源I/O类**:如 `FileInputStream`、`FileOutputStream`、`ByteArrayInputStream` 和 `ByteArrayOutputStream` 等,它们直接与特定的数据源(如文件或内存)交互。 3. **装饰器I/O类**:如 `...
- `ByteArrayInputStream`和`ByteArrayOutputStream`可以在内存中创建一个字节数组流,用于临时存储数据。 8. **异常处理**: - 在进行IO操作时,必须妥善处理`IOException`。通常,我们使用try-catch块来捕获并...
在Java编程语言中,输入/输出(Input/Output,简称IO)流是处理数据传输的核心概念,用于在程序与外部设备、文件系统或其他程序之间进行数据交换。Java提供了丰富的IO流类库,使得数据的读写操作变得既灵活又强大。...
- **ByteArrayInputStream/ByteArrayOutputStream**:节点流,用于以字节为单位直接操作字节数组。 - **ObjectInputStream/ObjectOutputStream**:处理流,用于以字节为单位直接操作对象。 - **DataInputStream/...
### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于...无论是简单的文件读写还是复杂的网络通信,Java IO流都能提供灵活且高效的解决方案。
5. **内存中的 I/O**:`StringReader` 和 `StringWriter` 提供了与 String 对象交互的便捷方式,而 `ByteArrayInputStream` 和 `ByteArrayOutputStream` 则允许在内存中直接处理字节数组。 6. **数据转换**:如 `...