2016-07-24 4 views
2

私はPathを仮想ファイルシステム上のzipファイル(jimfs)に持っており、このzipファイルをZipFileで開く必要があります。Java:ZipFileを使用したパス

しかし、引数としてPathを得るためには、ZipFileにコンストラクタはありません。Fileのみです。

を取得しているため、PathFile(path.toFile())からは作成できません。 ZipFileでZIPファイルを開くにはどうすればよいですか?あるいは、デフォルトのファイルシステムにないzipファイルを扱う他の方法がありますか?

+0

代わりに 'ZipFile(String)'を使用しますか? –

+0

@ Yassin Hajaj私は 'FileNotFoundException'を取得します。なぜなら、デフォルトのファイルシステム上のファイルを見つけ出しますが、仮想ファイルシステムでは見つからないからです。 –

答えて

1

ZipFileクラスは、ファイルシステム内のファイルに制限されています。

代わりにZipInputStreamを使用することもできます。

Path path = ... 
InputStream in = Files.newInputStream(path, openOptions) 

ZipInputStreamを作成するために使用InputStreamを使用してPathからInputStreamを作成します。この方法は期待どおりに動作するはずです:

ZipInputStream zin = new ZipInputStream(in) 
2

this questionを見てみましょう - zipファイルの内容から新しいファイルシステムを作成するコードがあります:

  • URI
  • にジップ
  • 変換パスのパスを取る
  • 新しいファイルシステムを作成しますURIの場合
+0

私は知っている - ジップファイルシステムを作成します。しかし、私はそれを必要としません。私はそれに仮想システムとzipファイルを持っています。そして、私はそのzipファイルからファイルをコピーする必要があります。 –

+0

見栄えが悪いです。 FileSystemProviderを使用してあるパスから別のパスにファイルをコピーできる場合、どうすればよいですか?https://docs.oracle.com/javase/7/docs/api/java/nio/file/spi/FileSystemProvider.html#copy(java.nio)。 file.Path、%20java.nio.file.Path、%20java.nio.file.CopyOption ...) –

関連する問題