OutputStream生成的文件名中文乱码
时间: 2023-07-10 11:36:43 浏览: 224
如果使用 `OutputStream` 来写入文件,而生成的文件名中包含中文字符,常常会出现中文乱码的问题。这是因为 `FileOutputStream` 不支持中文字符集,它只能处理 ASCII 字符集。如果需要处理中文字符集,需要使用 `OutputStreamWriter` 类来进行转换。
示例代码如下:
```
File file = new File("中文文件名.txt");
OutputStream os = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Hello, World!");
osw.flush();
osw.close();
```
在上面的示例中,我们使用 `OutputStreamWriter` 类将字符流转换为字节流,并指定了文件编码为 UTF-8。然后使用 `write` 方法将字符写入文件。最后,需要调用 `flush` 方法刷新缓冲区,并关闭流。
注意,如果你使用的是旧版本的 Java(如 Java 6),则可能需要使用 `FileOutputStream` 的构造方法来指定编码:
```
File file = new File("中文文件名.txt");
OutputStream os = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Hello, World!");
osw.flush();
osw.close();
```
在上面的示例中,我们使用 `FileOutputStream` 的构造方法来指定编码。这种方法在新版本的 Java 中已经不推荐使用了,因为它会忽略编码错误,并可能导致数据损坏。建议使用 `OutputStreamWriter` 来进行字符转换。