我已编写此程序将标记写入名为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]);
}
}
}
答案 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();
}
}