【问题标题】:How to access folders in a JAR file如何访问 JAR 文件中的文件夹
【发布时间】:2015-09-19 00:31:01
【问题描述】:

我的程序有一个名为 data 的文件夹——它存储文本文件——当我在我的 JAR 应用程序中单击保存时,虽然没有任何反应。我怎样才能做到这一点,以便我可以访问和保存新文件?这是部分代码

public void saveAs() {
     FileChooser fileChooser = new FileChooser();
     fileChooser.setTitle("Save Routine"); fileChooser.setInitialDirectory(new File("data/routines"));
     fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("txt", "*.txt"));
     if (fileName != null) {
         fileChooser.setInitialFileName(fileName);
     }
     save(fileChooser.showSaveDialog(stage));
}

我也是用绝对路径做的,但也没有用

【问题讨论】:

  • 您不能将文件保存在 jar 中,如果这就是您的意思。好吧,一切皆有可能,但是jar中的资源文件基本上是用来读的,不是用来写的。
  • 有罐子的替代品吗?还是有其他方法可以将它保存在罐子外面?
  • 它也不让我读取文件
  • 您可以做以下三件事之一:询问用户要保存的目录,使用与平台相关的 AppData 类型文件夹,或者您可以查看Preferences API,解释为@ 987654322@.
  • 对于阅读,您应该使用类加载器的getResource() 或getResourceAsStream() 方法,而不是文件访问方法。

标签: java jar save directory runnable


【解决方案1】:

没有看到你的 save(java.io.File) 方法,我不能说。 FileChooser.showSaveDialog 只显示对话框并告诉您他们选择的文件(如果有)。然后,无论是 JAR 还是 txt,您都必须编写它。

试试这个:

private void save(File where){
  if(where==null){ //they canceled.
    return;
  }
  try(OutputStream out = Files.newOutputStream(where.toPath())){
    //Write to out.
  }
}

您可以使用纯 JarFile constructor 将内容写入 JAR 文件,但看起来您需要纯文本文件。尽管您可以在应用程序运行时更新其 JAR 文件,但大多数程序不会这样做,因为这很奇怪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-30
    • 2023-04-10
    • 2012-06-16
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多