关于Tar包打包路径问题

qq_21728705 2018-07-16 05:24:33

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;
}

上面是我用的打包代码,但是打包后我想直接包里面就是文件,不带任何路径的,请问如何修改解决呢。

可以看到打包后的文件有很多层文件夹,但是我想这个包点开就是这三个文件该如何修改呢。求大神赐教。
...全文
630 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Remember__Peng 2020-08-11
  • 打赏
  • 举报
回复
引用 12 楼 dq5211 的回复:
加下方第二行代码即可:
TarArchiveEntry tae = new TarArchiveEntry(file);
 tae.setName(file.getName());
                os.putArchiveEntry(tae);
幸好点击了下一页按钮,不然又要查一会了。。 大哥牛逼,来抽根华子!
gaoxiong335 2019-12-19
  • 打赏
  • 举报
回复
引用 12 楼 dq5211 的回复:
加下方第二行代码即可:
TarArchiveEntry tae = new TarArchiveEntry(file);
tae.setName(file.getName());
os.putArchiveEntry(tae);

楼主可以结贴了
亲测可以!!!!!
dq5211 2019-10-31
  • 打赏
  • 举报
回复
加下方第二行代码即可:
TarArchiveEntry tae = new TarArchiveEntry(file);
 tae.setName(file.getName());
                os.putArchiveEntry(tae);
  • 打赏
  • 举报
回复

亲测可以满足楼主的需求。。我也是扒的另一位大神的。哈哈。。。
原文链接:https://blog.csdn.net/qq804702802/article/details/47829859
奔跑的小鱼儿 2018-07-18
  • 打赏
  • 举报
回复
引用 6 楼 qq_21728705 的回复:
[quote=引用 5 楼 welan123123 的回复:]
[quote=引用 4 楼 qq_21728705 的回复:]
[quote=引用 3 楼 welan123123 的回复:]
那就把所有文件复制到一个文件夹里再下载

文件本来就在一个文件夹里哟,我这里也不涉及下载,就是单纯的打包[/quote]
复制的时候去掉子文件夹,打包完成后再把那个文件夹删掉;不然你说的路径是什么,不是有子文件夹造成的?[/quote]
这个打包是在linux系统下运行的,不是root用户,不能把文件放到根目录下[/quote]
可以不是根目录啊,打包好后再移除去啊
qq_21728705 2018-07-18
  • 打赏
  • 举报
回复
引用 5 楼 welan123123 的回复:
[quote=引用 4 楼 qq_21728705 的回复:]
[quote=引用 3 楼 welan123123 的回复:]
那就把所有文件复制到一个文件夹里再下载

文件本来就在一个文件夹里哟,我这里也不涉及下载,就是单纯的打包[/quote]
复制的时候去掉子文件夹,打包完成后再把那个文件夹删掉;不然你说的路径是什么,不是有子文件夹造成的?[/quote]
这个打包是在linux系统下运行的,不是root用户,不能把文件放到根目录下
奔跑的小鱼儿 2018-07-18
  • 打赏
  • 举报
回复
引用 4 楼 qq_21728705 的回复:
[quote=引用 3 楼 welan123123 的回复:]
那就把所有文件复制到一个文件夹里再下载

文件本来就在一个文件夹里哟,我这里也不涉及下载,就是单纯的打包[/quote]
复制的时候去掉子文件夹,打包完成后再把那个文件夹删掉;不然你说的路径是什么,不是有子文件夹造成的?
qq_21728705 2018-07-18
  • 打赏
  • 举报
回复
引用 3 楼 welan123123 的回复:
那就把所有文件复制到一个文件夹里再下载

文件本来就在一个文件夹里哟,我这里也不涉及下载,就是单纯的打包
奔跑的小鱼儿 2018-07-17
  • 打赏
  • 举报
回复
那就把所有文件复制到一个文件夹里再下载
qq_21728705 2018-07-17
  • 打赏
  • 举报
回复
引用 1 楼 welan123123 的回复:
https://blog.csdn.net/keepTravel/article/details/78132323
看这个

好像并不能解决我的问题

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧