为什么 PrintWriter 不会写入动态创建的文本文件
Why won't PrintWriter Write to a Dynamically Created Text File
所以我正在制作一个游戏并尝试添加一个高分 table 来读取文本文件中的一些数据。如果用户以前从未玩过游戏或文件不存在,则会动态创建文本文件。我可以成功创建此文件,但由于某种原因,PrintWriter 不会写入该文件。有人可以解释一下为什么吗?
//VARIABLE DECLARATIONS
String currentDirectory = System.getProperty("user.dir"); //Contains the current directory the program is located in.
File forTable = new File(currentDirectory + "\highScoreTable.txt");
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
{
forTable.createNewFile();
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
}
updateTable.close(); //Close the print writer
在处理可能导致异常的事情时,永远记得使用try/catch语句。那是一个问题。
在那之后,文件仍然没有写入。您必须做的是将打印作者编写调用放在 !forTable.Exists()
部分之外。这是按预期工作的代码修订版。
String currentDirectory = System.getProperty("user.dir"); //Contains the
current directory the program is located in.
File forTable = new File(currentDirectory + "\highScoreTable.txt");
System.out.println(currentDirectory);
try {
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
{
forTable.createNewFile();
}
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.close(); //Close the print writer
}catch(IOException e) {
e.printStackTrace();
}
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
目前这个测试不可能是真的。您刚刚使用 new FileWriter(...)
创建了文件。它存在。
forTable.createNewFile();
现在为时已晚,您永远不需要它与 new FileWriter(...)
关联。构建 FileWriter
创建文件。
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
所以这段代码 none 被执行了。
所以我正在制作一个游戏并尝试添加一个高分 table 来读取文本文件中的一些数据。如果用户以前从未玩过游戏或文件不存在,则会动态创建文本文件。我可以成功创建此文件,但由于某种原因,PrintWriter 不会写入该文件。有人可以解释一下为什么吗?
//VARIABLE DECLARATIONS
String currentDirectory = System.getProperty("user.dir"); //Contains the current directory the program is located in.
File forTable = new File(currentDirectory + "\highScoreTable.txt");
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
{
forTable.createNewFile();
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
}
updateTable.close(); //Close the print writer
在处理可能导致异常的事情时,永远记得使用try/catch语句。那是一个问题。
在那之后,文件仍然没有写入。您必须做的是将打印作者编写调用放在 !forTable.Exists()
部分之外。这是按预期工作的代码修订版。
String currentDirectory = System.getProperty("user.dir"); //Contains the
current directory the program is located in.
File forTable = new File(currentDirectory + "\highScoreTable.txt");
System.out.println(currentDirectory);
try {
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
{
forTable.createNewFile();
}
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.close(); //Close the print writer
}catch(IOException e) {
e.printStackTrace();
}
PrintWriter updateTable = new PrintWriter(new FileWriter(forTable), true);
if(!forTable.exists())
目前这个测试不可能是真的。您刚刚使用 new FileWriter(...)
创建了文件。它存在。
forTable.createNewFile();
现在为时已晚,您永远不需要它与 new FileWriter(...)
关联。构建 FileWriter
创建文件。
updateTable.println("Player\t\tScore");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
updateTable.println("-------\t\t--");
所以这段代码 none 被执行了。