为了账号安全,请及时绑定邮箱和手机立即绑定

请问下为什么按照下面的程序写入TXT,TXT打开是乱码?

import java.io.DataOutputStream;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.InputStream;


public class DFileIO {


/**

* @param args

* DataOutputStream/DataInputStream  对“流”功能的扩展,可以更加方便地读取int,long,字符等基本数据类型

* @throws IOException 

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

DataOutput("D:\\abc\\cc.txt");

//DataInput(new File("D:\\abc\\cc.txt"));

}

    public static void DataOutput(String file) throws IOException{//输入也可以是File类型,这两种都试过可以的

    DataOutputStream dop=new DataOutputStream(new FileOutputStream(file));

    dop.writeInt(10);

    dop.writeInt(-10);

    dop.writeLong(10L);

    dop.writeDouble(0.5);

    //采用utf-8编码写出utf-8编码中,中文占3个字节,英文1个字节

   

    dop.writeUTF("哈喽");

    //采用utf-16be编码写出,utf-16be编码中,中英文占2个字节

    dop.writeChars("哈楼");

    dop.close();

    FileIO.readFirst(file);        

    }

    public static void DataInput(File file) throws IOException{

    DataInputStream dis=new DataInputStream(new FileInputStream(file));

    int i=dis.readInt();

    System.out.println(i);

    i=dis.readInt();

    System.out.println(i);

    long l=dis.readLong();

    System.out.println(l);

    double d=dis.readDouble();

    System.out.println(d);

    String s=dis.readUTF();

    System.out.println(s);

    /*String s2=dis.readUTF();//会出现EOFException

    System.out.println(s2);*/

    char s2=dis.readChar();//读一个中字

    System.out.println(s2);

    char s3=dis.readChar();//读一个中字

    System.out.println(s3);

    dis.close();

   

    }

}


正在回答

1 回答

为什么乱码

肯定是乱码啊,  你使用了DataOutputStream,把int long String 都存了进去。你打开这个文件,使用系统的notepad程序,notepad程序不知道你这个什么编码,用了ansi,吧intlong什么都放在一起当GBK处理了。

怎么做不乱码

不要用记事本打开DataOutputStream创建的东西,看不到乱码,眼不见心不烦。

你自己知道是什么,用DataInputStream或者InputStream能取出来用就行了。

0 回复 有任何疑惑可以回复我~
#1

sadfiy 提问者

非常感谢!
2017-07-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问下为什么按照下面的程序写入TXT,TXT打开是乱码?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信