如何在 NetBeans Platform 应用程序的用户目录中创建新文件?我使用过:
System.getProperty("netbeans.user", "user.home") + "/myfile");
但是NB IDE 7.1.1告诉我它已被弃用,我应该改用InstalledFile定位器。好的,我试过这个:
File file = InstalledFileLocator.getDefault().locate("myfile", null, false);
如果文件已存在,则它可以正常工作。我看不到任何方法,如何使用已安装的文件定位器创建新的。但是javadoc说,这种方法允许获取文件夹。所以我试了这个:
File file = InstalledFileLocator.getDefault().locate("myfile", null, false);
if (file == null) {
file = new File(InstalledFileLocator.getDefault().locate("", null, false), "myfile");
}
同样没有成功,方法定位现在失败,因为它找不到任何东西("/"是禁止的,也不起作用)。
所以我的问题是,如何在我的 NetBeans 平台应用程序中正确加载用户目录中的现有文件(它也用于写入,因此它不应该在程序目录中),如果它不存在,请创建它?
使用 Places.getUserDirectory()。
File file = InstalledFileLocator.getDefault().locate("myfile", null, false);
if (file == null)
{
file = new File(Places.getUserDirectory() + File. separator + "myfile");
}
来自 netbeans 平台文档 不应使用已安装的文件定位器来查找系统文件系统上的资源。要在系统文件系统中查找数据,请使用文件系统 API。前任:
FileObject fo = FileUtil.getConfigFile(myfile);
if (fo == null) {
fo = FileUtil.getConfigRoot().createData(myFile,ext);
}
也许你能做的最简单的事情就是在你的模块中包含一个简单的空文件(比如"here.txt"),它将自动安装在用户目录中。您可以在此处查看一个示例(请参阅"经验教训:将文件与 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()"的目录,你就设置好了。