【发布时间】:2012-05-06 05:16:45
【问题描述】:
我有一个程序需要生成一个整数,将其写入文本文件并在程序下次运行时将其读回。在一些异常行为之后,我将其剥离为设置一个整数值,将其写入文件并将其读回以进行调试。
totScore,设置为 25,当我在写入文件之前打印到控制台时,我看到了一个值 25。但是,当我读取文件并打印到控制台时,我得到三个值...25、13 和10。在记事本中查看文本文件给了我一个不在键盘上的字符,所以我怀疑该文件存储在 int 以外的其他地方。
为什么我的写入和读取步骤会得到不同的结果?
不是写成int吗?这些值是如何存储在文件中的?我是否需要将读取的值转换为其他值并将其转换为整数?
考虑:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.nio.file.*;
import java.nio.file.StandardOpenOption.*;
//
public class HedgeScore {
public static void main(String[] args) {
int totScore = 25;
OutputStream outStream = null; ///write
try {
System.out.println("totscore="+totScore);
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("hedgescore.txt")));
bw.write(totScore);
bw.write(System.getProperty("line.separator"));
bw.flush();
bw.close();
}
catch(IOException f) {
System.out.println(f.getMessage());
}
try {
InputStream input = new FileInputStream("hedgescore.txt");
int data = input.read();
while(data != -1) {
System.out.println("data being read from file :"+ data);
data = input.read();
int prevScore = data;
}
input.close();
}
catch(IOException f) {
System.out.println(f.getMessage());
}
}
}
【问题讨论】:
-
您正在使用字符 I/O API (
FileWriter) 进行写入,并使用字节 I/O (FileInputStream) 进行读取。问题是由于写作和阅读方法的不匹配造成的。