Java PrintWriter - 将文件保存到 NetBeans 中的源包

标签 java file netbeans save printwriter

我在 NetBeans 中使用以下 java 代码来读取和写入文件。

import java.io.*;
import java.util.*;

public class FileReadWrite {

    StringTokenizer tokenizer;
    BufferedReader inFile;
    PrintWriter outFile;
    File myFile;
    private int[] highscores = new int[3];

    public FileReadWrite() throws IOException, FileNotFoundException {

    }

    public int[] ReadFromSave() throws IOException, FileNotFoundException {

        inFile = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/files/highscores.txt" )));
        tokenizer = new StringTokenizer(inFile.readLine());
        int i = 0;
        while (tokenizer.hasMoreTokens()) {
            highscores[i] = Integer.parseInt(tokenizer.nextToken());
            i++;
        }

        inFile.close();
        return highscores;

    }

    public void SaveFile(int score) throws IOException, FileNotFoundException {

        if (score >= highscores[0]){
            highscores[2] = highscores[1];
            highscores[1] = highscores[0];
            highscores[0] = score;
        }
        else if (score >= highscores[1]){
            highscores[2] = highscores[1];
            highscores[1] = score;
        }
        else if (score >= highscores[2]){
            highscores[2] = score;
        }

        PrintWriter outFile = new PrintWriter(new FileWriter("/files/highscores.txt"));

        String line = highscores[0] + " " + highscores[1] + " " + highscores[2];

        outFile.println(line);
        outFile.close();

    }

}

我编写了一个俄罗斯方 block 程序,想在每场游戏后保存高分。当用户下次打开应用程序时,他们会看到前 3 个分数。在我添加“getClass().getResourceAsStream”后,ReadFromSave() 方法开始正常工作。但是我无法让 SaveFile() 方法工作。我给出错误“路径/文件未找到”。我应该如何在 NetBeans 中使用 PrintWriter,以便将其保存到源包中,从而更新 jar。因此,当应用程序完全关闭并重新打开时,它会打印最近的分数。如果不可能,我可以在哪里保存数据以免丢失?

谢谢!!

最佳答案

如果您希望能够再次保存分数,那么使用 getResourceAsStream 并不是一个好主意 - 这意味着与应用程序捆绑在一起的资源(通常位于 jar 文件中),并且通常是只读的。

您可能需要考虑使用 Java preferences API或者找出用于存储高分的文件的某个特定位置。然后在保存时写入该文件,并在加载时读取该文件。我个人不会使用 PrintWriter (它会吞下异常)或 FileWriter (您无法指定字符编码),但两者都应该可以工作。您只需要确保从保存乐谱的同一文件中加载乐谱即可。 (尚不清楚 /files/highscores.txt 是否确实是保存到的合适文件...您一个 /files 目录吗?您是否希望这与您的应用程序的工作目录相关?)

(此外,最好开始遵循 Java 命名约定,使用 camelCasing 作为方法名称...并使用 try-with-resources 语句来关闭编写器、流等。完成它们,而不是手动调用 close。)

关于Java PrintWriter - 将文件保存到 NetBeans 中的源包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158708/

相关文章:

java - 我如何将 BottomNavigationView 放在 <layout> 中?

java - 如何在我的 Mac 上恢复 Java

java - 扫描器 nextLine() NoSuchElementException

javascript - 是否可以使用 javascript 读取文件?

Java:从静态类访问 Jframe 标签

java - rmi 中 c3p0 配置和 getConnection 方法的放置位置

file - 如何将目录中的所有文件名保存到 bash 中的文本文件?

python - 使用 Python - 从一些 html 中获取表格并显示它?

java - 加载 J 连接器时出现问题

java - 同一 NetBeans 项目中的 Clojure 和 Java 源代码