gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:55:14 29 4
gpt4 key购买 nike

我在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com