2016-06-22 8 views
-1

こんにちは、入力ファイル(オフセットと長さに基づいて)からバイトブロックを読み取るプログラムを作成しようとしています。Javaを使用して既存のzipファイルにバイト配列を書き込む

ブロックごとに、zipファイル内に直接ファイルを作成するために、以下のメソッドを呼び出す必要があります。このファイルの内容は、バイト配列内のwhatsとなります。

public void addBytesToZip(String zipPath, byte[] contentBytes, String outputFileName) throws Exception 
    { 
     if (zipfs == null){   
      zipfs = createZipFileSystem(zipPath); 
     } 

     Path zipFilePath = zipfs.getPath(outputFileName); 

     Files.write(zipFilePath, contentBytes, StandardOpenOption.CREATE_NEW); 

    } 

createZipFileSystemメソッドは正常に私は指定していた場所に空のzipファイルを作成している -

は、ここに私の方法です。私はそれを行うためにFileSystems.newFileSystemを使用しています。

バイト配列は、このメソッドの内部に正しい内容を持っています。私はそれをzip外のファイルに書き出すと動作します。

動作していないステップは、Files.write(zipFilePath、contentBytes、StandardOpenOption.CREATE_NEW)です。ライン

私は、このメソッドに渡していた値がある -

文字列zipPath = "C:/Users/xyz/Desktop/ZippingUtilOutput/packge.zip"; ----これはzipファイルへのパスです

文字列outputFileName = "/file1.tiff"; ---これは、バイト配列(contentBytes)の内容を持つzip内に作成されるファイルの名前です。

例外はスローされません。書き込みメソッドの出力は "/file1.tiff"です。

誰かが私にこれを手伝ってもらえると大いに感謝します!

+0

'Files.write(zipFilePath、imageBytes、StandardOpenOption.CREATE_NEW);' imageBytesとは何ですか? – ControlAltDel

+0

申し訳ありません。私はここで質問を形成していたときにタイプミスでした。コードはまだ動作しません。 –

答えて

0

私はついにそれを理解しました。私はwrite文の後にFileSystemを閉じなかった!

追加zipfs.close();

関連する問題