目前,在我的eclipse项目中,我有一个我写的文件。但是,我已将项目导出到JAR文件,并且写入该目录不再有效。我知道我需要将此文件视为类路径资源,但如何使用BufferedWriter执行此操作?
答案 0 :(得分:5)
您不必将其视为要写入文件的类路径资源。如果文件在JAR文件中,您只需要这样做,但是您不想写入JAR文件中包含的文件吗?
您仍然可以创建和写入文件,但它可能是相对于工作目录 - 您执行JAR文件的目录(除非您使用绝对路径)。在eclipse中,从运行配置对话框中配置工作目录。
答案 1 :(得分:1)
你可能在Linux上工作。因为,在Linux中,当您从JAR启动应用程序时,工作目录将设置为您的主文件夹(/ home / yourname /)。从Eclipse启动时,工作目录设置为项目文件夹。
为了确保您确实知道您正在使用的文件位于项目文件夹或JAR所在的文件夹中,您可以使用这段代码来了解JAR所在的位置,然后使用{{ 1}}构造函数来创建文件:
File(File parent, String name)
而且,从现在开始,您可以像这样创建所有文件:
// Find out where the JAR is:
String path = YourClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
path = path.substring(0, path.lastIndexOf('/')+1);
// Create the project-folder-file:
File root = new File(path);
当然,File myFile = new File(root, "config.xml");
必须在您的范围内。
答案 2 :(得分:0)
此类资源(更改时)最好存储在user.home
的子目录中。这是一个可重现的路径,用户应具有写入权限。您可以使用主类的包名作为子目录的基础。 E.G。
our.com.Main -> ${user.home}/our/com/