编辑Java源文件

编辑Java源文件,java,Java,我目前正在做一个项目,它有一个使用文本文件的用户名和密码系统。为了使我的项目有条理,它们位于同一个netbeans文件夹中。但是,其中的文件位于src\classes\prototype1\textFiles下,但添加用户时正在编辑的文件位于build\classes\prototype1\textFiles下。这导致的问题是,每当我重新启动netbeans时,它只会离开src文件夹中的原始数据,而不是build文件夹中的编辑数据 我使用的代码是: try { File f = new

我目前正在做一个项目,它有一个使用文本文件的用户名和密码系统。为了使我的项目有条理,它们位于同一个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");}
试试看{
文件f=新文件(getClass().getResource(“textFiles\\PasswordScreen.txt”).toURI());
f、 可设置写(真);
FileWriter w=新的FileWriter(f);
BufferedWriter=新的BufferedWriter(w);
文件(f);

对于(inti=0;i而言,这是一种混合效应

您要寻址的文件位于
classes
文件夹中:此文件夹是编译器的输出文件夹。因此,它包含每个定义的易失性内容,因为这些内容是从
src
文件夹创建的

当启动IDE(本例中为NetBeans)时,它将清理项目并重建类,覆盖以前编辑的用户设置

解决方案很简单:不要将编辑过的文件写入
classes
文件夹。使用其他位置,例如当前目录。这通常是IDE启动的项目根目录,可以正确控制


您可能希望在某个地方配置文件的位置(命令行、环境变量等).

src/
下的任何内容都是要编译的纯Java代码。您不应该将任何资源文件放在那里。为什么要在
build
文件夹中编辑文件?一旦将代码部署到.jar文件中,该文件甚至不会是硬盘上的文件。您编辑的任何文件都必须在应用程序代码层次结构之外。资源应该被视为只读。应用程序通常作为.jar文件交付,在这种情况下,您将无法写入资源,因为它不是一个单独的文件。(此外,
getResource
在所有平台上使用前斜杠(
/
)作为文件分隔符;参数本质上是一个相对URL。)作为一个与问题没有直接关系的旁注:永远不要将用户密码以纯文本形式存储在某个文件中。对于a级项目来说,这还不够吗?密码是加密的。最后,您将如何存储它?谢谢,我将在上午尝试并在那时报告!