网站的商桥怎么做,wordpress定时器插件,笔记本怎么建设网站,国际新闻最新消息今天简讯一、解压缩zip格式
步骤#xff1a; 1.根据压缩文件原始路径(字符串),创建源文件对象(File对象) 2.创建根目录对象#xff0c;传入源文件的根目录 3.判断根目录,是否已经存在 ①如果存在#xff0c;则删除#xff1b; ②如果不存在#xff0c;则创建根目录。 4.可以用Zip…一、解压缩zip格式
步骤 1.根据压缩文件原始路径(字符串),创建源文件对象(File对象) 2.创建根目录对象传入源文件的根目录 3.判断根目录,是否已经存在 ①如果存在则删除 ②如果不存在则创建根目录。 4.可以用ZipInputStream对象进行zip格式的压缩文件 首先创建一个ZipInputStream对象zip文件中的每一个子文件或者子目录都是一个ZipEntry类型的对象。通过ZipInputStream对象调用getNextEntry()方法获取这些文件到输入流中。然后通过输入流和输出流完成文件的读写。 5.遍历压缩包中的每个子目录或子文件(ZipEntry类型的对象) 6.创建子目录或子文件(File对象) 7.创建子目录或者子文件 ①如果zipEntry对象是目录的话那就创建子目录 ②如果zipEntry对象是文件的话那就创建子文件 8.读取当前压缩包的子文件并通过输出流out写入新子文件中 具体代码实现如下
public class Text02 {public static void main(String[] args) {String path D:\\001\\easyftp-server-1.7.0.10-cn.zip;if (path.endsWith(.zip)) {unzip(path);} else if (path.endsWith(.rar)) {unrar(path);}}// 解压缩zip格式public static void unzip(String path) {// 根据原始路径(字符串),创建源文件(File对象)File sourceFile new File(path);// 创建根目录对象String sourceFileName sourceFile.getName();//压缩包的名字File rootDir new File(sourceFile.getParent() \\ sourceFileName.substring(0, sourceFileName.lastIndexOf(.)));//传入源文件的根目录// 判断根目录,是否已经存在if (rootDir.exists()) {// 如果存在则删除
// rootDir.delete();//仅能删除空目录// 使用commns-io包提供的FileUtils工具类进行删除try {FileUtils.deleteDirectory(rootDir);} catch (IOException e) {e.printStackTrace();}}// 创建根目录rootDir.mkdir();// ZipInputStream:用于进行zip格式的压缩文件输入流try (ZipInputStream in new ZipInputStream(new FileInputStream(sourceFile));) {// 遍历压缩包中的每个子目录或子文件(ZipEntry类型的对象)ZipEntry zipEntry null;while ((zipEntry in.getNextEntry()) ! null) {
// System.out.println(zipEntry.getName());\// 创建子目录或子文件(File对象)File file new File(rootDir.getPath() \\ zipEntry.getName());if (zipEntry.isDirectory()) {// 物理磁盘创建子目录file.mkdir();} else {// 物理磁盘创建子文件file.createNewFile();//读取当前压缩包的子文件并通过输出流out写入新子文件中FileOutputStream out new FileOutputStream(file);byte[] buff new byte[1024];int len -1;while((lenin.read(buff))!-1) {out.write(buff,0,len);}out.close();}}} catch (IOException e1) {e1.printStackTrace();}}
}
二、解压缩rar格式
步骤 1.创建源文件对象 2.创建解压缩的根目录对象, 通常是与zip文件在同一目录下通过用zip的文件的父目录与zip文件的文件名作为数据源并调用mkdir()方法创建目录。 ①如果根目录存在的话就删掉 ②如果根目录不存在就创建根目录 3.创建Archive对象用于读取rar压缩文件格式 解析并读取zip压缩文件创建一个ZipInputStream,传入一个FileInputStream作为数据源然后循环调用getNextEntry(),遍历zip文件的每一个子文件和子目录每次循环获取子文件名或子目录名并创建文件的输出流调用write()方法读取文件内容并写入输出流。 4.获取压缩文件中的所有子目录或子文件(FileHeader对象) 5.按照子目录(子文件)名称排序 6.遍历子目录和子文件 7.创建子目录或者子文件 ①遍历结果是目录那就创建新子目录 ②遍历结果是文件那就创建子文件 8.获取压缩包中的自我年间输入流复制文件输入流至新子文件 具体代码实现如下
public class Text02 {public static void main(String[] args) {
// String path D:\\001\\easyftp-server-1.7.0.10-cn.zip;String path D:\\001\\实验案例.rar;if (path.endsWith(.zip)) {unzip(path);} else if (path.endsWith(.rar)) {unrar(path);}}//解压缩rar格式public static void unrar(String path) {//1.创建解压缩的根目录//1.创建源文件对象File rarFile new File(path);//2.创建解压缩的根目录对象File rootDir new File(rarFile.getParent()\\rarFile.getName().substring(0, rarFile.getName().indexOf(.)));//3如果根目录存在的话就删掉if(rootDir.exists()) {try {FileUtils.deleteDirectory(rootDir);} catch (IOException e) {e.printStackTrace();}}//3.创建根目录rootDir.mkdir();//创建Archive对象用于读取rar压缩文件格式try (Archive archive new Archive(new FileInputStream(path))) {//获取压缩文件中的所有子目录或子文件(FileHeader对象)ListFileHeader fileheaderList archive.getFileHeaders();//按照子目录(子文件)名称排序fileheaderList.sort(new ComparatorFileHeader() {
//Overridepublic int compare(FileHeader o1, FileHeader o2) {return o1.getFileName().compareTo(o2.getFileName());}});//遍历子目录和子文件for(FileHeader fd: fileheaderList) {File f new File(rootDir.getPath()\\fd.getFileName());if(fd.isDirectory()) {//创建新子目录f.mkdir();}else {//创建新子目录f.createNewFile();//获取压缩包中的子文件输入流InputStream in archive.getInputStream(fd);//复制文件输入流至新子文件FileUtils.copyInputStreamToFile(in, f);}}} catch (RarException | IOException e) {e.printStackTrace();}}
}三、压缩文件
步骤 1.首先创建File对象files引用原始目录 2.然后创建一个ZipOutputStream,传入一个FileOutputStream作为数据源 3.调用listFiles()方法获取并遍历原始目录下的子文件列表每次循环创建一个ZipEntry,每写入一个文件前调用putNextEntry()方法 4.然后将源文件的字节内容写入zip压缩包 需要注意每次写完文件必须调用closeEntry()结束当前ZipEntry。 //压缩文件
public class Text05 {public static void main(String[] args) {//所在目录File dir new File(D:\\001\\001);//获取所有原始子文件File[] files dir.listFiles();//创建zip压缩文件的输出流try (ZipOutputStream out new ZipOutputStream(new FileOutputStream(dir.getPath()\\dir.getName().zip))) {//遍历所有原始子文件for(File f:files) {//写入一个压缩包中的子文件(ZipEntry对象)out.putNextEntry(new ZipEntry(f.getName()));//写入字节内容out.write(Files.readAllBytes(f.toPath()));//关闭压缩包的子文件out.closeEntry();}} catch (IOException e) {e.printStackTrace();}}}