gpt4 book ai didi

java - 在jar文件之外创建并读取xml文件

转载 作者:行者123 更新时间:2023-12-01 17:30:30 24 4
gpt4 key购买 nike

我最近问了很多,我所有的帖子都是关于同一个问题,但在不同的阶段,有不同的可能答案(因为具体问题与上一个不同,但密切相关)。所以,如果我看起来像是在重复我的问题,我很抱歉。事实上,我不是。我一直在 Google 和此处进行搜索,但似乎没有一个答案可以解决我的问题,或者我弄错了。

嗯,我的文件层次结构是:

+ MyGame
+ build.xml
+ src
+ ThisIsWhereEclipsePutsTheXMLFile
+ build
+ manyFoldersWithClassFiles
+ aSpecialFolderWhereTheEntryPointIs

+ ThisIsWhereIWantMyXMLfileToBe.xml
+ game.jar

我的问题基本上是这样的:我的程序应该将其状态保存到文件中,然后读取该文件。该文件应该位于 .jar 文件之外(只有一个),位于同一文件夹中。文件可以存在也可以不存在。如果存在,则应覆盖它。

在上一个问题中,我询问了 how to read an xml file that's in the same directory 。当我从 Eclipse 使用它时,我得到的答案实际上解决了我的问题。

但是我需要用我的整个程序创建一个 .jar 文件,并且每当我要求它这样做时,我都需要我的程序创建这样的 xml 文件。

我的 save() 是这样的,当我在 Eclipse 上运行它时它似乎可以工作,但当我运行它执行我的 .jar 文件时它不起作用:

public void save(Game game) throws IOException{
Document doc = DocumentHelper.createDocument();
doc.add(game.save());
File save=null;
save = new File("save.xml");

FileWriter writer = new FileWriter(save);
doc.write( writer);
writer.close();
}

这就是我从文件中获取信息的方式:

public Game getinfofromxml() throws IOException{
Game game;
SAXReader reader = new SAXReader();
try{
URL fileWithData= new File( "save.xml" ).toURI().toURL();
Document document = reader.read(fileWithData);
Element alreadySavedGame= document.getRootElement();
game= getGameSaved(alreadySavedGame);
}catch(DocumentException ex){
throw new IOException();
}
return game;
}

同样,这可以在 Eclipse 中运行,但是当我从 jar 文件运行它时,这将不起作用。在 Eclipse 中,xml 文件是在 MyGame 文件夹中创建的,但不是在我的 .jar 文件夹中创建的。当我执行 .jar 时,根本没有创建任何 XML。

现在,我一直在读这可能与类路径有关。那么,让我告诉你我是如何编译它的:

1) 我运行 Ant,它创建了构建目录。它不会自动创建 .jar。2)我创建Manifest.txt文件,我在其中写道:

 Main-Class: aSpecialFolderWhereTheEntryPointIs.MyMainClass
Class-Path: .

3) 我在 cmd 上创建 .jar 文件: jar cfm myGame.jar Manifest.txt *

所以,我不认为我在那里犯了太多错误......

Ant可能与此有关吗?任何想法?预先感谢(并对我的英语感到抱歉)

最佳答案

停止考虑“当前目录”并将 config.txt 文件放入其中。在 user.home 中,如 this answer 中所述。很长一段时间以来,操作系统制造商一直告诉我们不要将 config.php 文件放在文件中。应用程序目录中的设置。

另请参阅this answer到“java程序如何使用jar内的文件进行读写?”了解更多提示。

关于java - 在jar文件之外创建并读取xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com