亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java.util.zip-重新創建目錄結構

java.util.zip-重新創建目錄結構

肥皂起泡泡 2019-12-26 09:49:11
在嘗試使用zip壓縮存檔時,java.util.zip我遇到了很多問題,而這些問題大部分都是我解決的。現在,我終于獲得了一些輸出,我在努力獲得“正確的”輸出。我有一個提取的ODT文件(目錄將更適合描述),對此我做了一些修改?,F在,我想壓縮該目錄以重新創建ODT文件結構。將目錄壓縮并重命名以.odt結尾可以正常工作,因此應該沒有問題。主要問題是我丟失了目錄的內部結構。一切都變得“平坦”,我似乎沒有找到保留原始多層結構的方法。我希望對此有所幫助,因為我似乎找不到問題。以下是相關的代碼段:ZipOutputStream out = new ZipOutputStream(new FileOutputStream(    FILEPATH.substring(0, FILEPATH.lastIndexOf(SEPARATOR) + 1).concat("test.zip")));    compressDirectory(TEMPARCH, out);該SEPARATOR是系統文件分隔符和FILEPATH是原來的ODT,我將覆蓋,但還沒有在這里完成的用于測試目的的文件路徑。我只是寫到同一目錄中的test.zip文件。private void compressDirectory(String directory, ZipOutputStream out) throws IOException{    File fileToCompress = new File(directory);    // list contents.    String[] contents = fileToCompress.list();    // iterate through directory and compress files.    for(int i = 0; i < contents.length; i++)    {        File f = new File(directory, contents[i]);        // testing type. directories and files have to be treated separately.        if(f.isDirectory())        {            // add empty directory            out.putNextEntry(new ZipEntry(f.getName() + SEPARATOR));            // initiate recursive call            compressDirectory(f.getPath(), out);            // continue the iteration            continue;        }else{             // prepare stream to read file.             FileInputStream in = new FileInputStream(f);             // create ZipEntry and add to outputting stream.             out.putNextEntry(new ZipEntry(f.getName()));             // write the data.             int len;             while((len = in.read(data)) > 0)             {                 out.write(data, 0, len);             }             out.flush();             out.closeEntry();             in.close();         }     } }包含要壓縮文件的目錄位于用戶空間中的某個位置,而不與結果文件位于同一目錄中。我認為這可能很麻煩,但我真的看不出來。我也發現問題可能出在使用相同的流進行輸出,但是我再也看不到如何。我在一些示例和教程中看到了它們使用的getPath()替代方法,getName()但進行更改后得到的壓縮文件為空。
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 1131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號