2

私は自分が働いている会社のために取り組まなければならないプロジェクトを持っています、そしてそれは基本的に私がファイル拡張子なしでファイルを処理して表示しなければならないことを意味します。これらのファイルの作成方法を変更することはできないため、これらの種類のファイルを処理するための最良の方法についてアドバイスが必要です。DataSystems APIは拡張子の付いたファイルのみを処理するようですが、それはFileSystems APIのみを使用する必要があることを意味しますか?もしそうなら、FileObjectを実際に表すものとして使用しているNodeクラスとChildrenクラスのサンプルをいただければ幸いです。

ミルに感謝します、本当に助けに感謝します。

NetbeansプラットフォームのWebサイトから入手できる資料をしばらく読んだ後、上記のように私の目標に関するいくつかの質問が残ります。

目的を明確にするために:1。拡張子のないファイルを含むフォルダー(アプリケーションのインストールパスの外)があります。各ファイルは関心のあるポイントを表し、スペースで区切られたテキストデータが含まれています。このデータは、後でさまざまなグラフ作成ソフトウェアによってグラフを描画するために使用されます。2.これらのファイルを更新するための別のモジュールを使用して、これらのファイルを1つのモジュールのノードとして表示したいと思います。更新には、圧縮ファイルのダウンロード、このファイルの解凍、その内容の読み取り、およびその内容の解釈を行ってテキストデータファイルの更新方法を決定するボタンが含まれます。3.おそらく、ファイルの内容の変更を表示/表示するために(おそらくアイコンの変更を介して?)、ノードによって表されるFileObjectsに内容変更リスナーがあります。4.4。また、クリックされたノードによって表されるFileObjectに含まれるテキストデータ(読み取り専用)をテキストエディターで表示できるようにしたいのですが、これらのFileObjectとそれらを表すノードで実行できる必要があるのはそれだけです。 。4.ノードとExplorerViewAPIを使用して、これまでにダウンロードされたすべての圧縮ファイルを表示する別のモジュールを用意します(ここでも、すべてのファイルを「ダウンロード」フォルダーに表示することを想定しています)。ここで、これらのファイルは平均的なzip / JARファイルではないため、「セマンティックな意味」を追加したいと思うかもしれません。したがって、おそらくこのモジュールにDataSystemsAPIを使用します。NodesとExplorerViewAPIを使用して、これまでにダウンロードされたすべての圧縮ファイルを表示する別のモジュールを用意します(ここでも、すべてのファイルを「ダウンロード」フォルダーに表示することを想定しています)。ここで、これらのファイルは平均的なzip / JARファイルではないため、「セマンティックな意味」を追加したいと思うかもしれません。したがって、おそらくこのモジュールにDataSystemsAPIを使用します。NodesとExplorerViewAPIを使用して、これまでにダウンロードされたすべての圧縮ファイルを表示する別のモジュールを用意します(ここでも、すべてのファイルを「ダウンロード」フォルダーに表示することを想定しています)。ここで、これらのファイルは平均的なzip / JARファイルではないため、「セマンティックな意味」を追加したいと思うかもしれません。したがって、おそらくこのモジュールにDataSystemsAPIを使用します。

この時点で私の頭の中で最も支配的な質問は、このフォルダー内のすべてのファイルをノードとして表す正しい方法と、このノードのサブクラスと対応するChildrenクラスがどのようになるかです。「APIObject」が使用されている例では、最初のモジュールでDataSystems APIを使用する必要がない場合は、そのオブジェクトをFileObjectに置き換えることを設定したいと思いますか?

改めてご協力いただきありがとうございます。本当にありがたいです。

4

2 に答える 2

1

OK、アップデートを読んでください。ですから、ある時点で間違いなくDataObjectsが必要になると思います。キーポイント:

  1. DataObjectsをFileObjetcsに「リンク」するには、DataLoaderが必要です。これはDataObjectsのファクトリであり、特定の種類のファイルに対してのみアクティブ化されます。基本的に:

    DataObject dataObject = DataObject.find(fileObject);
    

    http://wiki.netbeans.org/DevFaqDataLoaderを参照してください

  2. DataLoaderがファイル拡張子を使用してファイルタイプを確認するのは一般的ですが、それが唯一の方法ではありません。実際、DataLoaderはMIMEタイプを使用し、MIMEResolverクラスを使用して特定のファイルにMIMEタイプを割り当てることができます。繰り返しになりますが、最も簡単なのは拡張機能を確認することですが、コードは内容を確認して推測することもできます(http://wiki.netbeans.org/DevFaqFileRecognition)。基本的に、MIMEResolverを単一のメソッドで実装する必要があります。

    public String findMIMEType (FileObject fileObject);
    

それはそれが望むことを何でもすることができます、そしてあなたはMIMEResolverをシステムに登録します(http://bits.netbeans.org/dev/javadoc/org-openide-filesystems/org/openide/filesystems/doc-files/HOWTO-MIMEを見てください詳細については.html)。

この時点で、DataObject.find()はDataObjectの独自のサブクラスをインスタンス化できるようになります。

  1. DataObjectにはcreateNodeDelegate()があり、これを使用してノードを作成し、レンダリング用のビューに配置できます。DataObjectの名前(デフォルトではFileObjectの名前)で自動的にレンダリングされます。正しく思い出せば(現時点ではわかりませんが)、プラットフォーム自体がディレクトリに適切なDataObjectを作成できるはずです。これにより、含まれているファイルごとに子を持つノードが自動的に作成されます。

  2. コンテンツを確認するには、EditorAPIをご覧ください。残念ながら、私はそれに精通していませんが、一般的に言えば、以前に定義したMIMEタイプを「プレーンテキスト」スタイルに関連付けるために、MIMEタイプを使用して再びアクティブ化できるはずです。http://bits.netbeans.org/dev/javadoc/org-openide-text/org/openide/text/doc-files/api.htmlを参照してください。ドキュメントの長さについて心配する必要はありません。また、内容の変更など、興味のないことについても説明します。

  3. ファイルのツリーをレンダリングできるようになったら、FilterNodeを使用して一部の子を非表示にします(http://wiki.netbeans.org/DevFaqNodesDecoratingを参照)。

于 2011-10-05T16:26:23.397 に答える
0

まず、いくつかの基本的なポイント:

  1. ファイルはFilesystemsAPIによって表されるため、確実に使用することになります。ファイルに拡張子がない場合は""文字列になるため、FileObjectが拡張子を管理することは問題ではありません。

  2. DataObjectsは別の部分です。これらを使用して、ファイル(正確には、FileObject)に基づくモデルエンティティを表しいくつかのセマンティクスがあります(通常、DataObjectをサブクラス化してメソッドを追加することで実装します)。「いくつかのセマンティクス」とは、バイトのシーケンスなどの単なるデータの束ではなく、解釈されるデータを意味します。つまり、アプリケーションがファイルシステムエクスプローラーの一般的な機能(ファイルのコピー、移動、削除など)を提供する場合は、FileSystemsAPIで十分です。データを解釈する必要はありません。たとえば、フィルタリングなどの機能も提供する写真操作アプリケーションを実装する場合は、追加のセマンティクスを配置するDataObjectをサブクラス化するPhotoDataObjectが必要になる可能性があります。これは、ファイルからデータを読み取り、BufferedImageや別の表現などを作成するためのメソッドがあることを意味します。これは、物事を紹介するための大まかな方法​​ですが、後で詳細に絞り込むことができます。もちろん、DataObjectsはFileObjectsよりも複雑であり、必要な場合にのみ使用する必要があります。

  3. ノードと子に関する質問は、(DataObjectとFileObjectで十分な)操作ではなく、表示に関連しています。Nodes APIは、画面にレンダリングされるデータ構造であるプレゼンテーションモデルを作成するための汎用APIです。もちろん、FileSystemやDataObjectなど、何でもかまいません。拡張子のないファイルには特に問題はありません。拡張子がない場合は、拡張子なしでレンダリングされるだけです。いずれの場合も、ノードをサブクラス化すると、画面上での表示方法を自由に制御できます。

意味のあるコード例を提供するには、ポイント1、2、および3で説明した観点から、必要なものをさらに指定する必要があります。

于 2011-10-05T09:49:22.990 に答える