要将Java编程的电子游戏状态保存在文本文件中(这是学校项目的练习,我不能使用序列化),我必须创建一个文本文件,并使用PrintWriter
写入其中,然后使用Scanner
读取。
直到今天,我一直在这个目录下创建文件:
PrintWriter vPW;
try {vPW = new PrintWriter("./saves/" + vFileName + ".txt");}
catch (final IOException pExp) {
player.getGUI().println("Failed to create the file.");
return;
}
现在我已经为我的项目创建了一个Jar归档文件,我意识到我不能在运行程序时在归档文件中创建文件。
我试着用这些目录创建一个文件,但是它们都不工作:
vPW = new PrintWriter(System.getProperty("user.home") + "/gamesaves/" + vNomFichier + ".txt")
或
vPW = new PrintWriter("C:/saves/" + vFileName + ".txt")
我如何在系统的某个地方创建、编辑和读取文本文件?
您可能需要先创建文件夹:
final File folder = new File(System.getProperty("user.home"), "gamesaves");
if(!folder.exists() && !folder.mkDirs()) {
//failed to create the folder, probably exit
throw new RuntimeException("Failed to create save directory.");
}
final File myFile = new File(folder, vNomFichier + ".txt");
final PrintWriter pw = new PrintWriter(myFile);
你也可以检查你的应用程序是否被允许写你要求它与folder.canWrite()
。如果返回false
,则应用程序没有权限写入该文件夹(或者它不存在)。