DataOutputStream的writeInt无法正常工作

时间:2013-04-12 07:01:41

标签: java

我已编写此程序将标记写入名为marks.txt的文件中,但为什么dos.writeInt()将Ascii值写入文件?

class Q5marks
{
   public static void main(String a[])throws IOException`
   {
      int marks[]=new int[6]
      File file = new File("marks.txt");
      FileOutputStream fos = new FileOutputStream(file);
      DataOutputStream dos = new DataOutputStream(fos);
      Scanner sc = new Scanner(System.in);
      for(int i = 0;i<6;i++)
      {
        marks[i]=sc.nextInt();
        System.out.println("marks "+(i+1)+" =>" +marks[i]);
        dos.writeInt(marks[i]);
      }
    }
 }

4 个答案:

答案 0 :(得分:1)

将代码替换为:dos.writeBytes(marks[i]+"");。它应该按照你的需要工作。

答案 1 :(得分:0)

它会将数值写入文件,因为您已指定writeInt

您可能希望使用:

doc.writeChar(marks[i]);

但我不能太确定。你的问题还不够清楚。

而是用作PrintStream。

答案 2 :(得分:0)

  

我想插入65 65 65 65 65 65,但它会将A A A A A A写入文件

然后你应该使用PrintStream而不是DataOutputStream

答案 3 :(得分:0)

当你致电dos.writeInt(marks[i]);时,不要以为它会以人类可读的格式写出int(因为普通的文本编辑器会将所有内容视为char,所以你的65会变成A)。它将写入int的字节值。您可以使用readInt()方法再次读取该文件。

编辑: 如果你想要它应该写int show,你可以用普通的文本编辑器阅读它 使用使用FileWriter而不是DataOutputStream的流动代码。别忘了关闭作家。

class Q5marks
 {
  public static void main(String a[])throws IOException
   {
  int marks[]=new int[6];
  File file = new File("marks.txt");
  FileOutputStream fos = new FileOutputStream(file);
  FileWriter writer=new FileWriter(file);
  Scanner sc = new Scanner(System.in);
  for(int i = 0;i<6;i++)
  {
    marks[i]=sc.nextInt();
    System.out.println("marks "+(i+1)+" =>" +marks[i]);
    writer.write(String.valueOf(marks[i])+" ");//a space is added to increase the readability 
  }
  writer.close();
}

}