【发布时间】:2012-06-16 11:40:14
【问题描述】:
我将我的 zip 存档上传到服务器,并希望在其中打开 .txt 和 .jpg 文件。我成功地在我的控制器中获取了我的存档,并通过ZipEntry 获取了每个文件的名称。现在我想打开它,但为此我应该得到我的文件的完整路径。
我还没有找到如何做到这一点。你能建议一些方法来做到这一点吗?
更新
我尝试使用下面建议的示例,但我无法打开文件
ZipFile zFile = new ZipFile("trainingDefaultApp.zip");
我有FileNotFoundException
所以我回到我的起点。我在 Java Spring 应用程序中有上传表单。在控制器中,我有一个 zip 存档为 byte[]
@RequestMapping(method = RequestMethod.POST)
public String create(UploadItem uploadItem, BindingResult bindingResult){
try {
byte[] zip = uploadItem.getFileData().getBytes();
saveFile(zip);
然后我得到了每个ZipEntry
InputStream is = new ByteArrayInputStream(zip);
ZipInputStream zis = new ZipInputStream(is);
ZipEntry entry = null;
while ((entry = zis.getNextEntry()) != null) {
String entryName = entry.getName();
if (entryName.equals("readme.txt")) {
ZipFile zip = new ZipFile(entry.getName()); // here I had got an exception
根据文档,我做得很好,但对我来说,只传递文件名并怀疑你会成功打开文件很奇怪
【问题讨论】:
-
什么意思?你说你打开成功了;你没有“完整路径”到什么地方?
-
我打开了 CommonsMultipartFile,其中包含我的 zip 存档为 byte[]。我将它转换为 ZipInputStream 并在循环中为我的存档中的每个文件都有一个 ZipEntry。现在我想阅读这个 .txt 文件和 .jpg 文件,但 ZipEntry 只包含这些文件的名称。所以我没有这个文件的完整路径,无法将它作为新文件打开(“d:/some.txt”)
标签: java spring zip zipinputstream