循环后从文件中写入和读取int

时间:2014-06-04 13:12:58

标签: java loops file-io

我正在编写一个应该像咖啡馆剪辑卡一样的应用程序。换句话说,对于顾客购买的每个n:th(在我的情况下为10)咖啡,他/她被授予免费饮料。所以,我已经完成了循环,我一直在编写和从文件中读取,因为我需要程序记住它最后停止的位置,以便客户能够关闭应用程序一旦他/她一直在商店里。但是,我很难搞清楚如何写入和读取文件,我的代码似乎没有输出任何.txt文件。我需要代码具有关闭条件,并且在进入此条件时,它应该将“count”写入.txt文件,然后关闭。一旦程序运行,下次它应该从这个.txt文件读取,以便它知道计数在哪里。

这是我到目前为止所拥有的:

公共类FelixNeww {

public static void main(String [] args) {
    Scanner key;
    String entry;
    int count = 0;
    String password = "knusan01";
    while(true) {
        System.out.println("Enter password: ");
        key = new Scanner(System.in);
        entry = key.nextLine();
        if(entry.compareTo(password) == 0){
            count++;
            System.out.println("You're one step closer to a free coffe! You have so far bought " 
                    + count + " coffe(s)");
        }
        if(count == 10  && count != 0){
            System.out.println("YOU'VE GOT A FREE COFFE!");
            count = 0;
        }
        if(entry.compareTo(password) != 0){
            System.out.println("Wrong password! Try again.\n");
        }
    }



}

public void saveToFile(int count)
{
    BufferedWriter bw = null;
    try
    {
        bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("countStorage.txt"))));
        bw.write(count);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if(bw != null)
        {
            try
            {
                bw.close();
            }
            catch(IOException e) {}
        }
    }
}

public int readFromFile()
{
    BufferedReader br = null;
    try
    {
        br = new BufferedReader(newInputStreamReader(newFileInputStream(new File("countStorage.txt"))));
        String line = br.readLine();
        int count = Integer.parseInt(line);
        return count;
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if(br != null)
        {
            try
            {
                br.close();
            }
            catch(IOException e) {}
        }
    }
    return 0;
}

}

2 个答案:

答案 0 :(得分:0)

您需要在所需位置调用readFromFilesaveToFile才能执行。 我建议您在readFromFile方法的开头调用Main,在循环中使用其返回的内容和saveToFile,只要期望的状态发生变化并且需要保存它。

答案 1 :(得分:0)

我在这看到一些问题。在readFromFile()方法中,在关键字new后面添加一个空格。我还建议现在放一个绝对路径(用于调试):

br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("C:\\Temp\\countStorage.txt"))));

saveToFile()方法中,构造函数是错误的。同时在此处输入文件的完整路径:

bw = new BufferedWriter(new FileWriter("C:\\Temp\\countStorage.txt"));

最后,在saveToFile()方法中,将计数写为String。将其写为int是指Unicode字符:

 bw.write(Integer.toString(count)); //updated per Hunter McMillen

并调用它......

    FelixNeww  f = new FelixNeww();
    f.saveToFile(44);
    System.out.println(f.readFromFile());