1

我已经编写了这个程序来将标记写入名为 的文件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

4 回答 4

1

i want to insert 65 65 65 65 65 65 but it writes A A A A A A into the file

Then you should be using PrintStream and not DataOutputStream.

于 2013-04-12T07:10:22.373 回答
1

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

于 2013-04-12T07:22:08.483 回答
0

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

您可能希望使用:

doc.writeChar(marks[i]);

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

而是用作 PrintStream。

于 2013-04-12T07:04:51.427 回答
0

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

编辑:如果您想要它应该编写 int 显示您可以使用普通文本编辑器读取它,然后使用使用 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();
}

}

于 2013-04-12T07:11:06.737 回答