2

如何在 NetBeans 平台应用程序的用户目录中创建新文件?我用了:

System.getProperty("netbeans.user", "user.home") + "/myfile");

但是 NB IDE 7.1.1 告诉我它已被弃用,我应该改用 InstalledFile Locator。好的,我试过这个:

File file = InstalledFileLocator.getDefault().locate("myfile", null, false);

如果文件已经存在,它工作正常。我看不到任何方法,如何使用 InstalledFileLocator 创建新的。但是javadoc说,这种方法允许获取文件夹。所以我尝试了这个:

File file = InstalledFileLocator.getDefault().locate("myfile", null, false);
if (file == null) {
  file = new File(InstalledFileLocator.getDefault().locate("", null, false), "myfile");
}

再次没有成功,方法定位现在失败,它找不到任何东西(“/”被禁止并且也不起作用)。

所以我的问题是,如何在我的 NetBeans 平台应用程序中正确加载用户目录中的现有文件(它也是用于编写的,所以它不应该在程序目录中),如果它不存在,创建它?

4

3 回答 3

2

您可以使用Places.getUserDirectory()

File file = InstalledFileLocator.getDefault().locate("myfile", null, false);
if (file == null) 
{
   file = new File(Places.getUserDirectory() + File. separator + "myfile");
}
于 2015-01-11T15:15:38.503 回答
1

netbeans 平台文档中,InstalledFileLocator 不应用于在系统文件系统上查找资源。要在系统文件系统中查找数据,请使用 Filesystems API。前任:

FileObject fo = FileUtil.getConfigFile(myfile);
  if (fo == null) {
        fo = FileUtil.getConfigRoot().createData(myFile,ext);
  }
于 2012-04-06T21:31:08.613 回答
1

您可以做的最简单的事情可能是在您的模块中包含一个简单的空文件(例如“here.txt”),该文件将自动安装在用户目录中。您可以在此处查看此示例(请参阅“经验教训:将文件与 NetBeans 模块捆绑”部分)。

基本上,您将文件包含在模块的“release/modules/ext/here.txt”目录中。

安装模块时,平台会自动为您安装模块中包含的“here.txt”文件到用户目录中,您无需担心。

一旦你的模块被安装并运行,你想要找到这样的文件:

File hereTXT = InstalledFileLocator.getDefault()
    .locate("modules/ext/here.txt", 
    "a.b.c",
    false);

(其中“abc”是您的模块标识符。)

然后从“hereTXT”文件中,您可以使用“hereTXT.getParent()”获取目录,一切就绪。

于 2012-04-06T21:58:34.077 回答