【问题标题】:Does a file have to be updated in some way for Java?Java 是否必须以某种方式更新文件?
【发布时间】: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


【解决方案1】:

我不知道威宁根是什么。但据我所知,将数据添加到文件后,关闭文件,然后尝试读取文件中的数据。这个定义一直在我脑海中浮现,在你完成你的过程后应该关闭文件。我只能猜测您是否完成了两个用于读写的java类或同一类的读写方法。以下提供一些代码,以便所有人都能理解您的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多