После изучения API-интерфейса NetBeans и исходного кода, я считаю, что нашел ответ на свой вопрос.
Атрибуты, как указано выше, хранятся в специальном файле атрибутов. Каждая папка в виртуальной файловой системе имеет скрытый файл атрибутов (.nbattrs
), который содержит атрибуты, сохраненные для каждого FileObject
, например,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE attributes PUBLIC "-//NetBeans//DTD DefaultAttributes 1.0//EN"
"http://www.netbeans.org/dtds/attributes-1_0.dtd">
<attributes version="1.0">
<fileobject name="dk-i2m-netbeans-smtpdummyservice-mailserver-1244831819713">
<attr name="name" stringvalue="My test"/>
<attr name="desc" intvalue="Server for testing outgoing e-mails"/>
</fileobject>
</attributes>
Этот файл полностью контролируется NetBeans, и нет необходимости открывать или закрывать потоки ввода / вывода.
Если, однако, вы хотите добавить контент к FileObject
, а не просто к атрибутам, вам придется сделать это обычным способом Java с использованием InputStream
и OutputStream
FileObject
геттер и сеттер) и не забудьте закрыть потоки соответственно. например,
FileObject appRoot = FileUtil.getConfigRoot().getFileObject("myapp");
try {
FileObject fo = servers.createData(filename);
fo.setAttribute("name", "a name");
fo.setAttribute("desc", "a description");
// Lock the FileObject before writing
FileLock lock;
try {
lock = fo.lock();
} catch (FileAlreadyLockedException ex) {
Exceptions.printStackTrace(ex);
return;
}
try {
OutputStream out = fo.getOutputStream(lock);
try {
// Write into the output stream
} finally {
// Remember to close the stream
out.close();
}
} finally {
lock.releaseLock();
}
} catch (IOException ex) {
throws new FileCreationException("Could not create file " + filename, ex);
}