【问题标题】:Why is my FileOutputStream saving files in wrong location?为什么我的 FileOutputStream 将文件保存在错误的位置?
【发布时间】:2018-05-15 21:10:57
【问题描述】:

我有一个包含 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

我做错了什么?

【问题讨论】:

  • FileOutputStream 采用String 文件名/位置。您正在将数据写入 getResourceAs 的引用名称。
  • 哦,我明白了。在过去的一个小时里,我一直在为此苦苦挣扎,至少对我来说,在这里没有找到任何有用的东西。我也不能给出完整的路径,因为我稍后也要构建一个 Jar。 FileOutputStream t = new FileOutputStream("files/MO.data");也没有工作。这是我在intellij中右键单击文件并按“获取相对路径”时得到的路径
  • 您可以使用 Java 内置的文件/文件/路径库。如果您不提供完整路径,文件将创建一个相对于工作目录的文件,而其他两个可以促进这一点。
  • 如果我错了请纠正我,但在构建 Jar 文件时不会使用 File/Files/Path 给出错误?
  • 您不应该写入 jar 中的文件。可能会改变内容的文件应该存在于 jar 之外。

标签: java fileoutputstream


【解决方案1】:

您正在构建一个输出流,然后采用它的字符串表示并以某种方式假设它是一个有效路径。而是获取此资源的 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 中的已保存模板,然后将修改后的数据保存到另一个位置时。

【讨论】:

  • FileOutputStream t = new FileOutputStream(String.valueOf(GameReader.class.getResource("MO.data").getPath()));没用。无法在 GameReader.class.getResource("MO.data") 上调用 getAbsolutePath()
  • 对不起,手头没有 IDE。试试 url.getPath()+url.getFile()
猜你喜欢
  • 2015-03-05
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多