我有一个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 and src/files/MO.data
我正在上课的课程位于src / logic / saver.class
但是,它会将其保存到文件中:java.io.BufferedInputStream@11b1857c in src/java.io.BufferedInputStream@11b1857c
我做错了什么?
答案 0 :(得分:0)
您正在构建输出流,然后采用其字符串表示并以某种方式假设它是有效路径。而是获取此资源的URI,它将为您提供绝对路径。
URL url = GameReader.class.getResource("MO.data");
String.valueOf(url.getPath()+url.getFile());
修改强>
对不起,我错过了您正在尝试写到捆绑资源。它将是只读的,您必须将其放入resources/
文件夹,而不是src/
。如果要存储某些会话数据,可能需要使用临时文件夹System.getProperty("java.io.tmpdir")
或用户主页System.getProperty("user.home")
或当前工作目录(不要添加任何路径)。然后,您将文件名添加到此路径并保存在那里。有时需要混合方法,当您读取jar中捆绑的已保存模板,然后将修改后的数据保存到其他位置。