我目前正在制作一个项目,它有一个使用文本文件的用户名和密码系统。为了尝试保持我的项目有条理,它们位于同一个netbeans文件夹中。但是,其中的文件位于src\classes\prototype1\textFiles
下,但添加用户时正在编辑的文件位于build\classes\prototype1\textFiles
下。这导致的问题是,每当我重新启动netbeans时,它只会关闭我在src
文件夹中的原始数据,而不是build
文件夹中编辑的数据。
我使用的代码是:
try {
File f = new File(getClass().getResource("textFiles\\PasswordScreen.txt").toURI());
f.setWritable(true);
FileWriter w = new FileWriter(f);
BufferedWriter writer = new BufferedWriter(w);
wipeFile(f);
for (int i = 0; i <= length; i++){
writer.write(user[i].getUsername());
writer.newLine();
writer.write(user[i].getPassword());
writer.newLine();
writer.write(Integer.toString(user[i].getState()));
writer.newLine();
writer.write("-");
writer.newLine();
}
writer.close();
f.setReadOnly();
} catch(Exception e){System.out.println("error writing to file");}
答案 0 :(得分:1)
这是效果的混合。
您要寻址的文件位于classes
文件夹中:此文件夹是编译器的输出文件夹。因此,它包含每个定义的易失性内容,因为内容是从src
文件夹创建的。
启动IDE(本例中为NetBeans)时,它将清理项目并重建类,覆盖以前编辑过的用户设置。
解决方案很简单:不要将编辑过的文件写入classes
文件夹。使用其他位置,例如当前目录。这通常是IDE启动的项目根目录,可以正确控制。
您可能希望将文件的位置配置在某处(命令行,环境变量......)。