gpt4 book ai didi

java - Jar 在 FileOutputStream 中找不到 txt 文件

转载 作者:行者123 更新时间:2023-12-02 01:11:00 25 4
gpt4 key购买 nike

**我正在尝试从文本文件保存并获取 Player 对象,它在使用我的 IDE 时有效,但当我创建 Jar 时,它找不到文本文件。我尝试过

this.getClas().getResources(path)

但它仍然找不到我的文本文件的路径。有人可以帮忙吗?

  public void setPlayer() throws FileNotFoundException {
ArrayList<Player> playerArrayList = new ArrayList<>();
playerArrayList = getPlayers();

Player player = new Player();
player.name = ViewManager.name;
player.score = Collision.points;
playerArrayList.add(player);
try{

FileOutputStream fileOut = new FileOutputStream("src/resources/highscore.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
for(Player player1 : playerArrayList){
out.writeObject(player1);
}

out.close();
fileOut.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

´´´´

最佳答案

资源文件不是物理文件,因为它们可以位于 jar 内。它们是只读的,类加载器可以缓存它们。它们区分大小写,以 / 作为路径分隔符,并且路径从类路径的根开始,可能是 src/resources。

因此,如果某些物理文件不存在,请使用资源文件作为后备资源进行复制。

Path appDir = Paths.get(System.getProperty("user.home") + ".myapp");
Files.createDirectories(appDir);

Path file = appDir.resolve("highscore.txt");
if (!Files.exists(file)) {
// Copy resource to file, either:
URL url = getClass().getResource("/highscore.txt");
Path templatePath = Paths.get(url.toURI());
Files.copy(templatePath, file);

// Or
InputStream templateIn = getClass().getResourceAsStream("/highscore.txt");
Files.copy(templateIn, file);
}

try (FileOutputStream out = Files.newOutputStream(file)) {
...
}

路径是文件的概括。

关于java - Jar 在 FileOutputStream 中找不到 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59406593/

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