0

基本的に、ローカル ファイル システムからリモート ファイル システムに FTP のようなプロトコルを介してファイルをコピー/移動するアプリケーションを作成します。

ファイル システム サービス プロバイダー インターフェイス内のプロトコル固有のビットをカプセル化するのは良い方法でしょうか?

私が理解している限りでは、新しい IO API を使用して、私のライブラリを他のアプリケーションと連携させることができますよね?

4

2 に答える 2

3

RemoteFileSystemProviderリモートファイルシステム専用のクラスを作成することを考えているようです。このクラスはミラーリングFileSystemProviderされ、使用しているリモートファイルシステムにアクセスするための同様の機能を提供します。これがプロジェクトまたはチームが繰り返し使用できるものである場合はFileSystemProvider、コードを作成するときにオブジェクトをミラーリングする価値があります。これにより、パッケージに精通している人なら誰でも、java.nio.fileパッケージの使用方法を簡単に理解できます。

ただし、それFileSystemProvider自体はパッケージ内のインターフェイスに準拠したり、クラスを拡張したりしないことに注意してください。これはエントリポイントであり、クラスもエントリポイントになります。ただし、メソッド構造を模倣した場合は、再利用可能な仕様にChannel準拠する読み取りおよび書き込み用のオブジェクトを生成することになります。java.nioこれにより、チャネルの操作方法を知っているすべてのコードが、リモートファイルシステムプロバイダーによって生成されたチャネルを操作できるようになります。

ただし、このようなものを構築するための最初のステップは、このリモートファイルシステム専用のパッケージを構築することです。すべての通信を処理し、、、、、、、およびその他の必要な機能を実装しgetUploadChannelます。これにより、この特定のファイルシステムとその機能に対して定義された優れた常識的なインターフェイスが提供されます。このパッケージは、このファイルシステムへの接続を実装するために任意のコンテキストで使用できます。このオブジェクトがチャネルを使用してファイルをアップロードおよびダウンロードすることを確認すると、を使用するすべてのAPIと統合できるようになります。getDownloadChannelrenameRemoteFilecopyRemoteFiledeleteRemoteFilejava.nio

これが完了し、テストされ、機能した後でのみ、チームの他のメンバーに配信するために、どのインターフェイスを模倣または実装するかを検討します。これにより、リモートファイルシステムプロトコルまたはJava APIへの変更が、システム全体に与える影響を最小限に抑えることができます。

于 2010-08-30T14:33:15.500 に答える
1

私は落ち込んで、FTP のようなプロトコルを使用していました。高レベル API よりも低レベル API を実装する際の問題は、すべての真のコストを偽装し、実際には非常に困難または高価であることが簡単に見えるようにすることです。たとえば、seek() を考えてみましょう。

于 2010-08-31T09:21:02.777 に答える