写入文本文件但文件内容不可读

时间:2012-03-17 10:44:41

标签: java

我想将数字写入文件。程序运行时没有任何错误,但是当我打开我写的文件时,文件的内容就像“!”#$%&'()* +, - 。/ 0123456789:;< => @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _`ABCDEFGHIJKLMNOPQRSTUVWXYZ {|}〜€,ƒ“...†‡‰šœžŸ¡¢£¤¥|§¨©ª «¬®¯°±²³'μ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈ”。

我通过使用FileInputStream读取文件内容并打印内容进行交叉检查。 IDE打印所需的输出,但文件中的整数不以可读形式存储。 谁能告诉我为什么整数没有按预期填充在文件中?

import java.io.*;


public class Main {

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

        try{
        FileOutputStream fos = new FileOutputStream("Exercise_19.txt");

        for(int i = 0;i<=200; i++){
            fos.write((int)i);
        }
        fos.close();
        }
        catch(IOException ex){
        ex.printStackTrace();
        }

    }

3 个答案:

答案 0 :(得分:3)

你为什么要在文件中获取数据,我不确定,但是FileOutputStream用于编写原始字节数据而不是人类可读文本。尝试使用FileWriter代替。

答案 1 :(得分:2)

fos.write(int)使用整数的最低8位写入一个字节。

如果你想将文本写入文件,更简单的选择是使用PrintWriter(注意PrintWriter可以使用FileOutputStream,因此可以完成,但你真的必须知道你在做什么。)

public static void main(String... args) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter("Exercise_19.txt");
    for (int i = 0; i <= 200; i++)
        pw.println(i);
    pw.close();
}

答案 2 :(得分:1)

FileOutputStream类的Write()方法将以字节格式写入数据。因此您无法以正常的记事本格式阅读它。但是,您可以使用FileInputStream类来阅读它。

写作语法如下,请查看此link

write(int b) 
          Writes the specified byte to this file output stream.

完整的写作和阅读示例,您可以找到here