如何使用java复制某个目录中的所有文件并重新创建目录结构?
而不是一次复制一个文件。我正在压缩所有文件并解压缩它们。我使用下面的代码来压缩和解压文件,但是如何解压文件并根据文件描述动态地重新创建目录结构呢。 例如:如果文件是如何使用java复制某个目录中的所有文件并重新创建目录结构?,java,file,directory,Java,File,Directory,而不是一次复制一个文件。我正在压缩所有文件并解压缩它们。我使用下面的代码来压缩和解压文件,但是如何解压文件并根据文件描述动态地重新创建目录结构呢。 例如:如果文件是 c://users//desktop//635289512-251.txt 我需要把文件放进去 c://users//desktop//635\u users//2895\u access//635289512-251.txt 谢谢你的帮助 public static void zip(File directory, File zi
c://users//desktop//635289512-251.txt
我需要把文件放进去
c://users//desktop//635\u users//2895\u access//635289512-251.txt
谢谢你的帮助
public static void zip(File directory, File zipfile) throws IOException {
URI base = directory.toURI();
Deque<File> queue = new LinkedList<File>();
queue.push(directory);
OutputStream out = new FileOutputStream(zipfile);
Closeable res = out;
try {
ZipOutputStream zout = new ZipOutputStream(out);
res = zout;
while (!queue.isEmpty()) {
directory = queue.pop();
for (File kid : directory.listFiles()) {
String name = base.relativize(kid.toURI()).getPath();
if (kid.isDirectory()) {
queue.push(kid);
name = name.endsWith("/") ? name : name + "/";
zout.putNextEntry(new ZipEntry(name));
} else {
zout.putNextEntry(new ZipEntry(name));
copy(kid, zout);
zout.closeEntry();
}
}
}
} finally {
res.close();
}
}
public static void unzip(File zipfile, File directory) throws IOException {
ZipFile zfile = new ZipFile(zipfile);
Enumeration<? extends ZipEntry> entries = zfile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
File file = new File(directory, entry.getName());
if (entry.isDirectory()) {
file.mkdirs();
} else {
file.getParentFile().mkdirs();
InputStream in = zfile.getInputStream(entry);
try {
copy(in, file);
} finally {
in.close();
}
}
}
}
publicstaticvoidzip(文件目录、文件zipfile)引发IOException{
URI base=directory.toURI();
Deque queue=new LinkedList();
push(目录);
OutputStream out=新文件OutputStream(zipfile);
可关闭的res=输出;
试一试{
ZipOutputStream zout=新ZipOutputStream(输出);
res=zout;
而(!queue.isEmpty()){
directory=queue.pop();
对于(文件kid:directory.listFiles()){
String name=base.relativize(kid.toURI()).getPath();
if(kid.isDirectory()){
排队。推(小孩);
name=name.endsWith(“/”)?name:name+“/”;
zout.putNextEntry(新ZipEntry(名称));
}否则{
zout.putNextEntry(新ZipEntry(名称));
复印件(孩子,佐特);
zout.closeEntry();
}
}
}
}最后{
res.close();
}
}
公共静态void解压(文件zipfile,文件目录)引发IOException{
ZipFile zfile=新ZipFile(ZipFile);
列举