【发布时间】:2014-10-10 20:09:03
【问题描述】:
所以我从一个文本文件开始;这个文本文件在开始时包含一个数字 3(woningen 的数量)3 Woningen。我可以用扫描仪毫无错误地阅读它们。我也可以添加一个没有错误的Woning。如果添加了 Woning,则文件顶部的数字会增加 1。
问题如下: 如果添加了 Woning,则文件已更改。现在这个数字是 4,并且增加了一个 Woning。但是,如果我想阅读所有的 Woningen,Java 会在 4th Woning 返回异常。所以由于某种原因,我无法阅读 4th Woning。
这可能是什么原因?在对文件进行更改后,我是否必须以某种方式保存文件?还是必须做其他事情?
非常感谢您的帮助:)!
编辑
注意:Woning 在荷兰语中是 House 的意思。 读取文件的代码:
public static Portefeuille read (String infile) {
try {
Scanner sc = new Scanner (new File(infile));
ArrayList<Woning> wlijst = new ArrayList<Woning>();
Portefeuille p = new Portefeuille();
int woningen = sc.nextInt();
int i = 0;
while (i < woningen) {
sc.nextLine();
String tag = sc.nextLine();
wlijst.add(Woning.read(sc));
wlijst.get(i).setTag(tag);
//System.out.println(wlijst.get(i).getTag());
//System.out.println(wlijst.toString());
p.voegToe(wlijst.get(i));
i++;
}
sc.close();
return p;
}
catch (Exception e) {
System.out.println("Portefeuille: Exception is caught");
Portefeuille p = new Portefeuille();
return p;
}
}
写入文件的代码:
public static void writeToFile (Portefeuille port, int woningen) {
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("Makelaar.txt", false)))) {
woningen = woningen + 1;
out.println(woningen);
ArrayList<Woning> wlijst = new ArrayList<Woning>();
wlijst = port.woninglijst;
for (int i = 0; i < wlijst.size(); i++) {
if (wlijst.get(i) instanceof KoopWoning) {
KoopWoning kw = (KoopWoning) wlijst.get(i);
KoopWoning.writeToFileK(kw, out);
}
else {
HuurWoning hw = (HuurWoning) wlijst.get(i);
HuurWoning.writeToFileH(hw, out);
}
}
out.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("writeToFile: Exception Caught");
}
}
文件如下所示:
3
TE KOOP:
Emmalaan 23
3051JC Rotterdam
7 kamers
koopprijs 300000
energiepeil C
VERKOCHT:
Emmalaan 25
3051JC Rotterdam
5 kamers
vraagprijs 280000
energiepeil A
TE HUUR:
Javastraat 88
4078KB Eindhoven
3 kamers
huurprijs 500
【问题讨论】:
-
您没有显示任何代码,也没有显示更改前后的文件。我们只能猜测......
-
这听起来很奇怪。到底什么是胜利?
-
我觉得这个问题很搞笑。
-
发布您的代码和文本文件示例将有助于我们了解您要做什么。
-
我放了一些代码。老实说,我不明白所有这些苛刻的答复。包含代码不是强制。我的问题并不是我自己的代码所特有的。这是一个普遍的问题:您是否也必须对正在读取和写入的文件做一些事情。希望代码有所帮助,并且您可以帮助我
标签: java file java.util.scanner printwriter