public static File pack(List<File> sources, File target) {
FileOutputStream out = null;
try {
out = new FileOutputStream(target);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
TarArchiveOutputStream os = new TarArchiveOutputStream(out);
for (File file : sources) {
try {
System.out.println(file.getName());
os.putArchiveEntry(new TarArchiveEntry(file));
IOUtils.copy(new FileInputStream(file), os);
os.closeArchiveEntry();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return target;
}
上面是我用的打包代碼,但是打包后我想直接包里面就是檔案,不帶任何路徑的,請問如何修改解決呢。

可以看到打包后的檔案有很多層檔案夾,但是我想這個包點開就是這三個檔案該如何修改呢。求大神賜教。
uj5u.com熱心網友回復:
https://blog.csdn.net/keepTravel/article/details/78132323看這個
uj5u.com熱心網友回復:
好像并不能解決我的問題
uj5u.com熱心網友回復:
那就把所有檔案復制到一個檔案夾里再下載uj5u.com熱心網友回復:
檔案本來就在一個檔案夾里喲,我這里也不涉及下載,就是單純的打包
uj5u.com熱心網友回復:
復制的時候去掉子檔案夾,打包完成后再把那個檔案夾刪掉;不然你說的路徑是什么,不是有子檔案夾造成的?
uj5u.com熱心網友回復:
那就把所有檔案復制到一個檔案夾里再下載
檔案本來就在一個檔案夾里喲,我這里也不涉及下載,就是單純的打包
復制的時候去掉子檔案夾,打包完成后再把那個檔案夾刪掉;不然你說的路徑是什么,不是有子檔案夾造成的?
這個打包是在linux系統下運行的,不是root用戶,不能把檔案放到根目錄下
uj5u.com熱心網友回復:
那就把所有檔案復制到一個檔案夾里再下載
檔案本來就在一個檔案夾里喲,我這里也不涉及下載,就是單純的打包
復制的時候去掉子檔案夾,打包完成后再把那個檔案夾刪掉;不然你說的路徑是什么,不是有子檔案夾造成的?
這個打包是在linux系統下運行的,不是root用戶,不能把檔案放到根目錄下
可以不是根目錄啊,打包好后再移除去啊
uj5u.com熱心網友回復:

親測可以滿足樓主的需求。。我也是扒的另一位大神的。哈哈。。。
原文鏈接:https://blog.csdn.net/qq804702802/article/details/47829859
uj5u.com熱心網友回復:
加下方第二行代碼即可:TarArchiveEntry tae = new TarArchiveEntry(file);
tae.setName(file.getName());
os.putArchiveEntry(tae);
uj5u.com熱心網友回復:
加下方第二行代碼即可:
TarArchiveEntry tae = new TarArchiveEntry(file);
tae.setName(file.getName());
os.putArchiveEntry(tae);
樓主可以結貼了
親測可以!!!!!
uj5u.com熱心網友回復:
加下方第二行代碼即可:
TarArchiveEntry tae = new TarArchiveEntry(file);
tae.setName(file.getName());
os.putArchiveEntry(tae);
幸好點擊了下一頁按鈕,不然又要查一會了。。
大哥牛逼,來抽根華子!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24195.html
標籤:Java相關
