如何在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平台应用程序中核心加载用户目录中的现有文件(它也用于写入,因此它不应该在程序目录中)并且如果它不存在,创造它?
答案 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()'的目录,然后你就可以了。