java dataOutputStream

来源:百度知道 编辑:UC知道 时间:2024/06/23 04:16:23
本人在java初学阶段,写了如下一个关于dataoutputstream的程序,但是为什么输入到记事本里面的是乱码,但是通过read()又可以读出来?
import java.io.*;
public class Filter1{
public static void main(String[]args)throws Exception{
File f=new File("f:\\javaio\\filter.txt");
FileOutputStream fos=new FileOutputStream(f);
DataOutputStream dos=new DataOutputStream(fos);
dos.writeUTF("乖乖");
dos.writeInt(20);
dos.writeInt(180);
dos.writeUTF("中国");
dos.close();

FileInputStream fis=new FileInputStream(f);
DataInputStream dis=new DataInputStream(fis);
System.out.println(dis.readUTF());
System.out.println(dis.readInt());
System.out.println(dis.readInt());
System.out.println(dis.readUTF());
dis.close();

}
}

字节流进行读写时不支持中文的,会出现乱码.
而且由于采用的是字节流,它会把你上面的20,180转换为对应的值存入流中.如果把20改为70(对应的ASCII码值为F),就能看到文件中被存入了F.
至于读的时候,只有它自己才知道它写入了什么.

还有你的文件路径写法也不对,单\号而不是双\号.
F:\\fileio\test.txt

建议把dos.writeUTF("乖乖");
改成:dos.write("乖乖".getBytes());把中文转换成字节的方式写进去。