请问下为什么我按照下面的代码输入,可TXT里打开是乱码

来源:4-5 字节缓冲流

sadfiy

2017-07-13 19:33

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();

   

    }

}


写回答 关注

2回答

  • 下线123
    2017-07-31 20:19:28
    已采纳

    记事本里采用的是默认编码是ANSIhttp://img.mukewang.com/597f1ef90001b29603450079.jpg,但是你项目中有很多编码方式,java默认的是utf-16be,你写汉字时使用的是writeUTF()这使用的是utf-8编码,你代码中也有注释的,所以编码方式不统一,自然会出现乱码

    sadfiy

    非常感谢!

    2017-08-02 09:43:39

    共 1 条回复 >

  • 泥土的诉说
    2017-07-14 11:28:47

    会不会是编码格式没统一,检查一下你的项目编码

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题