Java 写入包中的.txt文件

Java 写入包中的.txt文件,java,Java,我想写入一个包中的.txt文件。我可以让它从存储.txt文件的确切位置读取,但不能从包内读取。我假设它正在使用类装入器,但我似乎无法让它工作。 这是我到目前为止所拥有的 public void writeFile(String fileLocation) { Writer output = null; File file = new File(fileLocation); try { output = new BufferedWriter(new File

我想写入一个包中的.txt文件。我可以让它从存储.txt文件的确切位置读取,但不能从包内读取。我假设它正在使用类装入器,但我似乎无法让它工作。 这是我到目前为止所拥有的

public void writeFile(String fileLocation) {
    Writer output = null;
    File file = new File(fileLocation);
    try {
        output = new BufferedWriter(new FileWriter(file));  
        output.append("WRITING TEST");

     output.close();
    } catch (IOException ex) {
     System.out.println("Couldn't write to file.");

    }
}
然后我在另一个类中使用它来编写

WriteFile writeFile = new WriteFile();
writeFile.writeFile("src/com/game/scores.txt");

我理解,如果使用类加载器,您将删除“src/”,因为当程序在.jar中编译时,它将不再存在。

您可以使用该包中的类来提供文件夹的位置。 试试像这样的东西

public URL getPackageLocation() {
    return getClass().getResource(".");
}

这将为您提供从中调用此方法的文件夹的位置。

无法在jar中写入或更新文件。因为jar本身就是一个文件

请参考此链接


从注释中,您已经知道无法写入驻留在JAR文件中的文件。充其量只能创建文件,相对于JAR所在的路径,如下所示:

 mylocation
          |-- my-jar.jar
          |-- com
                |--game
                      |--myfile.txt
我想写信给它,以更新我的游戏中的分数作为 用户通过级别

虽然有可能,但我不建议在这个用例中使用它。只要把它写在:

Path userdir = Paths.get(System.getProperty("user.home"), ".myApp", "<my app version>");
Path userdir=Path.get(System.getProperty(“user.home”)、“.myApp”和“);

您不能写入Jar文件。不建议写入Jar文件。您可以在jar文件之外进行写入


有关更多详细信息,请参阅和堆栈溢出问题。

我不确定您在问什么。您是否正在尝试写入资源?我不确定是否有一种通用的方法可以对Java包层次结构中的文件进行写入。如果该文件在JAR文件中会怎样?该文件将在.JAR文件中。我想在用户通过关卡时给它写信来更新我游戏中的分数。你不能给jars@user3080274内的文件写信:这也不是一个好主意。代码和变量数据不应该像这样强制在一起……您可以通过这种方式获得.jar文件中的文件位置(我已经多次使用它来调用图像等等)。但是,我认为您不能在jar中编辑.txt文件。