所以我编写的代码充当了一个登录系统的文件系统,两个帐户都是预先添加的,都是管理员。他们可以创建帐户。所有帐户都存储在用户名的数组列表中,以及密码的数组列表。我试图这样做,以便当我导出此应用程序时,当管理员添加到数组列表时,将信息发送到txt文件,以便下次运行程序时,程序将加载任何帐户txt文件。我已经测试了帐户的加载,并且工作正常,但我似乎无法写入txt文件。我从这个网站上用这个方法获取了这段代码,但我不确定我做错了什么:
public static void writeFileContnet(){
String path = "C:\\Users\\DJANDEK\\Desktop\\LogInPro\\info.txt";
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(path, true));
if(!loadFileAsString(path).equals("")){
writer.newLine();
}
System.out.println(Account.accounts.get(Account.accounts.size()-1));
writer.write(Account.accounts.get(Account.accounts.size()-1));
System.out.println(breaker);
writer.write(breaker);
System.out.println(Account.passwords.get(Account.passwords.size()-1));
writer.write(Account.passwords.get(Account.passwords.size()-1));
writer.write(breaker);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line;
try {
while((line = in.readLine()) != null)
{
System.out.println("it prints this");
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
对于那些对println感到疑惑的人,控制台显示: 鲍勃; 1Q2W; BobsPass (信息是正确的)。 我在控制台中没有错误。为了回答重复的问题,他被告知要使用文件,而不是如何使用该文件。如果我已经在txt文件上有数据,那么Reader将读取并s.o.p它。
答案 0 :(得分:0)
你不能写到你的jar里面的文件。您需要提供文件系统上文件的路径。
答案 1 :(得分:0)
即使您更改为使用文件系统中的文件而不是jar中的文件,它仍然不会写入文件,因为您没有关闭BufferedWriter。
您可以像BufferedReader一样显式关闭它。或者更好的是,您可以使用try-with-resources。