下面是我尝试的代码。它只压缩子文件夹的内容,而不压缩文件夹 我需要将所有子文件夹及其内容压缩。我在这里做错了。 示例:我在演示文件夹中有一个文件夹“ demo”,我有一个a,b,c文件夹。我想将a,b,c连同内容一起压缩,并且zip不应包含作为演示的父对象。
@if(!empty($jreq))
<p>{{$jreq->user_id}} is requesting to join {{$jreq->name}} group</p>
答案 0 :(得分:0)
这是我为带有层次结构和没有层次结构的zip文件和目录编写的代码。
zip.getHierarchy().equals("F")
部分完成了您想做的工作。
在此代码中,您必须传递源文件,目标,层次结构(T / F)作为参数。
另外,您可能需要DTO类。
public static void Start() throws IOException{
FileOutputStream fos = new FileOutputStream(zip.getDestination());
ZipOutputStream zipOut = new ZipOutputStream(fos);
File fileToZip = new File(zip.getSourcePath());
zipDirectory(fileToZip, fileToZip.getName(), zipOut);
zipOut.close();
fos.close();
}
public static void zipDirectory(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {
if (fileToZip.isDirectory()) {
File[] children = fileToZip.listFiles();
for (File childFile : children) {
if(zip.getHierarchy().equals("T")) {
zipDirectory(childFile, childFile.getPath(), zipOut);
}else if(zip.getHierarchy().equals("F")){
zipDirectory(childFile, childFile.getName(), zipOut);
}
}
return;
}
doZip(fileToZip,fileName,zipOut);
}
public static void doZip(File fileToZip,String fileName,ZipOutputStream zipOut) throws IOException {
FileInputStream fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileName);
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
fis.close();
}