在用户目录中创建新文件(在NB平台上使用InstalledFileLocator)

时间:2012-04-06 13:12:20

标签: netbeans netbeans-platform

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

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

但NB IDE 7.1.1告诉我它是 depreceated 而我应该使用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");
}

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

所以我的问题是,如何在我的NetBeans平台应用程序中核心加载用户目录中的现有文件(它也用于写入,因此它不应该在程序目录中)并且如果它不存在,创造它?

3 个答案:

答案 0 :(得分:2)

您可以使用Places.getUserDirectory()

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

答案 1 :(得分:1)

来自netbeans platform docs InstalledFileLocator不应该用于查找系统文件系统上的资源。要在系统文件系统中查找数据,请使用Filesystems API。例如:

FileObject fo = FileUtil.getConfigFile(myfile);
  if (fo == null) {
        fo = FileUtil.getConfigRoot().createData(myFile,ext);
  }

答案 2 :(得分:1)

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

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

安装模块后,平台会自动为您安装模块中包含的'here.txt'文件,因此您不必担心这一点。

一旦你的模块安装了一个运行,你想找到这样的文件:

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

(其中“a.b.c”是您的模块标识符。)

然后从'hereTXT'文件中你可以获得带有'hereTXT.getParent()'的目录,然后你就可以了。