import java.io.*;
public class DataOut{
public static void main(String args[]) throws IOException{
FileOutputStream fout=new FileOutputStream("data.txt");
DataOutputStream out=new DataOutputStream(fout); //创建(文件)数据输出流
String[] items={"面包","笔","被子","牙膏","毛巾"};
int[] units={5,2,1,2,3};
float[] prices={1.5f,2.8f,125f,7.2f,5.6f};
for(int i=0;i<items.length;i++){
out.writeUTF(items[i]); //向文件中写入字符串
out.writeChar('\t'); //向文件中写入制表字符
out.writeFloat(prices[i]); //向文件中写入浮点数
out.writeChar('\t');
out.writeInt(units[i]); //向文件中写入整数
out.writeChar('\n');
}
out.close();
fout.close();
}
}
上面代码生成一个data.txt文件,但是文件的内容却是乱码,乱码如下
 闈㈠寘  ??        
 绗?  @333      
 琚瓙  B?        
 鐗欒啅  @鎓f      
 姣涘肪  @?3      到底是什么问题?难道是我WIN7的问题?

解决方案 »

  1.   


    import java.io.*;public class DataOut{
    public static void main(String args[]) throws IOException{
    FileOutputStream fout = new FileOutputStream("D:\\data.txt");
    PrintWriter pw = new PrintWriter(fout); //创建(文件)数据输出流

    String[] items = {"面包","笔","被子","牙膏","毛巾"};
    int[] units={5,2,1,2,3};
    float[] prices = {1.5f, 2.8f, 125, 7.2f, 5.6f};

    for(int i=0;i<items.length;i++){
    pw.print(items[i]); //向文件中写入字符串
    pw.print('\t'); //向文件中写入制表字符
    pw.print(prices[i]); //向文件中写入浮点数
    pw.print('\t'); //向文件中写入制表字符
    pw.print(units[i]); //向文件中写入整数
    pw.println();//换行
    }
    fout.flush();
    pw.flush();
    pw.close();
    fout.close();
    }
    }楼主可以试试用PrintWriter,这是用于文本输出的,DataOutputStream一般用于二进制格式的写入。
      

  2.   

     DataOutputStream 中当你用writeInt()时,Java里面int是4个字节,字符是两个字节,它是以4个字节写到了记事本里,float是以8个字节写进去的。在文本中能看懂的数据,那就必须是char或String类型(用二进制Unicode存储)。DataOutputStream把一个数据以非上述存储方式写到文件中,那就只能用DataInputStream读了(这也是书上常看到为什么DataOutputStream和DataInputStream要求成对的出现)
      

  3.   

    3楼说到点子上。汗下楼主,竟然怀疑是WIN7的问题……还好,没说是Java的bug。C++初学者就总说编译器有bug。