writeInt()为什么写入文件是乱码?

1.
clipboard.png
结果是

clipboard.png

2.
查了下好像说显示的底层的位操作码,我改成使用writeUTF(),
dout.writeUTF(String.valueOf(1));
结果还是错的,为什么?
clipboard.png

**
clipboard.png

阅读 5.7k
1 个回答

DataOutputStream 用于保存 Java 基本类型数据,writeUTF() 使用的是一种“修改版”UTF-8.

  1. data output stream lets an application write primitive Java data types to an output stream in a portable way. An application can then use a data input stream to read the data back in.

例子

import java.io.*;
public class test{
   public static void main(String[] args) throws Exception {
      FileOutputStream fos = new FileOutputStream("out.txt");
      DataOutputStream dos = new DataOutputStream(fos);
      dos.writeUTF("nihao你好");
      dos.close();

      FileInputStream fis = new FileInputStream("out.txt");
      DataInputStream dis = new DataInputStream(fis);
      String s = (String)dis.readUTF();
      dis.close();

      System.out.println(s);
   }
}

为了避免乱码,最好编译时指定一下编码

javac -encoding UTF-8 test.java

参考

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题