我有一个项目,我必须处理的公司,我的工作,这基本上意味着我必须处理和显示文件没有任何文件扩展名。我不能改变他们产生这些文件的方式,所以我需要一些建议,最好的方式来处理这类文件。数据系统API似乎只照顾文件与扩展名,那么这是否意味着我必须只使用FileSystemsAPI呢?如果是这样的话,我将欣赏一些使用FileObject作为它们实际表示的Node和Children类的示例。
非常感谢,真的很感激你的帮助。
在花了一些时间阅读了Netbeans平台网站上提供的材料后,我对上面提到的目标提出了几个问题。
为了澄清我的目标:1.我有一个文件夹(在应用程序安装路径之外),其中包含无扩展名的文件。每个文件代表一个兴趣点,包含空格分隔的文本数据,这些文本数据稍后将被各种绘图软件用于绘制图形。2.我想在一个模块中将这些文件显示为节点,该模块可能具有用于更新这些文件的单独模块。更新将包含一个按钮,该按钮将导致下载压缩文件、解压缩该文件读取其内容并解释该内容以确定将如何更新文本数据文件(也许通过图标改变?)文件内容的改变。4.我还希望能够显示文本数据(只读)包含在由文本编辑器中单击的节点表示的FileObject中,但这就是我需要能够对这些FileObject和表示它们的节点所做的全部工作。4.使用另一个模块显示到目前为止下载的所有压缩文件(再次假设我希望在Nodes和ExplorerView API的帮助下显示“download”文件夹中的所有文件)。在这里,我可能希望为这些文件添加“语义含义”,因为它们不是普通的zip/Jar文件,因此可能会为此模块使用DataSystems API。
此时,我脑海中最主要的问题是,将该文件夹中的所有文件表示为节点的正确方法是什么,以及该节点的子类和相应的Children类是什么样子的。在示例中使用了“APIObject”,如果在第一个模块中没有必要使用DataSystems API,我想将该对象替换为FileObject。
我想再次感谢你的任何帮助,这真的是感激不尽。
2条答案
按热度按时间2w3rbyxf1#
好的,请阅读您的更新。因此,我认为在某些情况下您肯定需要DataObjects。关键点:
1.要将DataObjects“链接”到FileObjetcs,您需要一个DataLoader。它是一个DataObjects工厂,只为某些类型的文件激活。基本上:
请参阅http://wiki.netbeans.org/DevFaqDataLoader
1.虽然DataLoader通常使用文件扩展名来确认文件类型,但这并不是唯一的方法。实际上,DataLoader使用MIME类型,并且可以使用MIMEResolver类为给定文件分配MIME类型。同样,最简单的事情是查看扩展名,但您的代码也可以查看要猜测的内容(http://wiki.netbeans.org/DevFaqFileRecognition)。基本上,您必须使用单个方法实现MIMEResolver:
然后将MIMEResolver注册到系统中(有关详细信息,请参见http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/doc-files/HOWTO-MIME.html)。
此时,DataObject.find()将能够示例化您自己DataObject子类。
1.数据对象已获得创建节点委托(),它可以用来创建一个节点,放入视图中进行呈现。它将自动呈现DataObject的名称,默认情况下是FileObject的名称。如果我没记错的话(但目前我还不确定),平台本身应该能够为目录创建适当的DataObject,它将自动为每个包含的文件创建一个带有子节点的Node。
1.要查看内容,您可以查看编辑器API。不幸的是,我不熟悉它,但一般来说,它应该可以通过使用MIME类型再次激活,即它将您之前定义的MIME类型与“纯文本”样式相关联。请查看此处http://bits.netbeans.org/dev/javadoc/org-openide-text/org/openide/text/doc-files/api.html,不要担心文档的长度,因为它还解释了诸如更改内容之类的内容。你不感兴趣的事。
1.一旦你能够渲染一个文件树,通过使用FilterNode隐藏视图中的一些子节点(请参见http://wiki.netbeans.org/DevFaqNodesDecorating)。
to94eoyn2#
一、几点基本观点:
1.文件是由Filesystems API表示的,所以你肯定会使用它。FileObject管理扩展名不是问题,因为如果你的文件没有扩展名,它将是一个“”字符串。
1.您关于节点和子节点的问题与显示内容有关,而不是与操作内容有关(DataObject和FileObject就足够了)。Nodes API是创建表示模型的通用API,表示模型是呈现在屏幕上的数据结构。它可以是任何您想要的东西,当然包括FileSystem或DataObject。我没有看到没有扩展名的文件有任何特定的问题,就像它们没有扩展一样,它们将在没有扩展的情况下被渲染。在任何情况下,子类化Node,你都可以根据自己的需要控制在屏幕上渲染的方式。
要提供一些有意义的代码示例,需要在我刚才在第1、2和3点中描述的透视图中指定更多所需的内容。