gpt4 book ai didi

java - 为什么我的 FileOutputStream 将文件保存在错误的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:49 24 4
gpt4 key购买 nike

我有一个包含 MO.data 的文件夹,我想将对象保存到其中。

  try{
FileOutputStream t = new FileOutputStream(String.valueOf(GameReader.class.getResourceAsStream("MO.data")));
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(t));

out.writeObject(map);
out.close();
System.out.println("File saved and closed!");
return true;

}catch(IOException ioe){
System.err.print(ioe);
return false;
}

我有:src/files/GameReader.class 和 src/files/MO.data

我正在工作的类(class)位于 src/logic/saver.class

但是,它不断将其保存到文件:java.io.BufferedInputStream@11b1857c in src/java.io.BufferedInputStream@11b1857c

我做错了什么?

最佳答案

您正在构建一个输出流,然后获取其字符串表示形式并以某种方式假设它是有效路径。相反,获取该资源的 URI,它将为您提供它的绝对路径。

URL url = GameReader.class.getResource("MO.data");
String.valueOf(url.getPath()+url.getFile());

编辑:

很抱歉,我错过了您正在尝试写入捆绑资源的情况。它将是只读的,您必须将其放入 resources/ 文件夹中,而不是 src/ 中。如果您想存储一些 session 数据,您可能需要使用临时文件夹 System.getProperty("java.io.tmpdir") 或用户主目录 System.getProperty("user.home") 或当前工作目录(然后不要添加任何路径)。然后将文件名添加到该路径并保存在那里。有时,当您读取捆绑在 jar 中的已保存模板,然后将修改后的数据保存到另一个位置时,需要采用混合方法。

关于java - 为什么我的 FileOutputStream 将文件保存在错误的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50337155/

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