2

取得した URL からディレクトリ (コンテンツを含む) をコピーしたい

Some.class.getClassLoader().getResource("folder");

jar:file:/D:/../some.jar!/someparentまたはのいずれかを返しますfile:/D:/../someparent

FileSystem(jar intern dirsの場合)と再帰的にコピーすることを考えましたFiles.walkFileTree(..)

jar:file:/D:/../some.jar!/folderFileSystem NIO2 のみを取得するように変更することは可能ですか?

4

4 に答える 4

0

見てみましょう:
http://docs.oracle.com/javase/tutorial/essential/io/pathClass.html

バージョンに関する注意: java.io.File を使用する JDK7 より前のコードがある場合でも、File.toPath メソッドを使用して Path クラスの機能を利用できます。詳細については、レガシー ファイル I/O コードを参照してください。

編集済み:File.toPath()メソッドはあなたが望むものであるべきだと思います。Pathこの場合Paths.get(URI)は必要ありません。

再編集: Paths.get(URL.toURI())URL で開始する場合は利用できますが、URISyntaxExceptionURL.toURI() からスローされた処理を処理する必要があります。

@Stephen C で述べたようにPath、nio2 の機能です。

于 2014-02-05T14:23:37.803 に答える
0

実際には、NIO.2 は、Java 7 のオーバーホールで追加された新しい NIO 機能の便利なラベルにすぎません。つまり、この用語に別の意味を持たせている場合を除きます。

NIO.2 以外のものを含まないソリューションが必要な場合は、(厳密に言えば) それは不可能です。すべてのソリューションには、NIO.2 よりも前の を使用する必要がありStringますString。したがって、「非 NIO.2」です。

あるいは、NIO.2 にあるが NIO にないクラスの使用を許可する場合、FileNIO.2 でも NIO でもありません。それはそれらの両方よりも前です。


"jar:file:/D:/../some.jar!/folder"FileSystem NIO2 のみを取得するように変更することは可能ですか?

それを処理できるプロバイダーを作成することが可能かどうかを尋ねる場合FileSystem、答えは理論的には「はい」であり、おそらくすでに行われています... JARファイルに対してできることのモジュロ制限。(Path / FileSystem を介したインプレース更新は、実装が非常に難しく、ランタイム リソースの点でコストがかかります。)

プロバイダーの実装および/またはプロバイダーの使用に NIO.2 API のみを使用する必要があると言って上記の問題を制約している場合、答えはおそらくノーです。 " ...そして、それはあなたが本当に達成しようとしていることによります...)

于 2014-02-05T14:16:10.767 に答える