java下载zip文件(java安装包下载)
其实java下载zip文件的问题并不复杂,但是又很多的朋友都不太了解java安装包下载,因此呢,今天小编就来为大家分享java下载zip文件的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
java怎么读取Zip和RAR里面的文件啊
ZipInputStream是一个指向ZIP文件的流,这个流最重要的方法就是getNextEntry方法,一个zip文件可以包含好几个被压缩的文件,这个方法的功能就是返回下一个目录项,也就是返回zip文件中的下一项,并且把流指向这个目录文件项。getNextEntry的返回值是ZipEntry,它表示zip文件中的一个项,它可以返回这个文件项的大小、名称等。你可以根据它返回的文件大小调用ZipInputStream的read方法来读取需要的字节。给你一个例子:public class ZipTest{
public static void main(String args[]) throws FileNotFoundException, IOException{
ZipInputStream zis= new ZipInputStream(new FileInputStream("c://a.zip"));//生成读取ZIP文件的流
ZipEntry ze= zis.getNextEntry();//取得下一个文件项
long size= ze.getSize();//取得这一项的大小
FileOutputStream fos= new FileOutputStream("c://"+ze.getName());//产生输出文件对象
for(int i= 0;i<size;i++){//循环读取文件并写入输出文件对象
byte c=(byte)zis.read();
fos.write(c);
}
fos.close();
zis.close();
}
}
用java小应用程序实现文件压缩、解压缩
40.ZIP压缩文件
/*
import java.io.*;
import java.util.zip.*;
*/
//创建文件输入流对象
FileInputStream fis=new FileInputStream(%%1);
//创建文件输出流对象
FileOutputStream fos=new FileOutputStream(%%2);
//创建ZIP数据输出流对象
ZipOutputStream zipOut=new ZipOutputStream(fos);
//创建指向压缩原始文件的入口
ZipEntry entry=new ZipEntry(args[0]);
zipOut.putNextEntry(entry);
//向压缩文件中输出数据
int nNumber;
byte[] buffer=new byte[1024];
while((nNumber=fis.read(buffer))!=-1)
zipOut.write(buffer,0,nNumber);
//关闭创建的流对象
zipOut.close();
fos.close();
fis.close();
}
catch(IOException e)
{
System.out.println(e);
}
41.获得应用程序完整路径
String%%1=System.getProperty("user.dir");
42.ZIP解压缩
/*
import java.io.*;
import java.util.zip.*;
*/
try{
//创建文件输入流对象实例
FileInputStream fis=new FileInputStream(%%1);
//创建ZIP压缩格式输入流对象实例
ZipInputStream zipin=new ZipInputStream(fis);
//创建文件输出流对象实例
FileOutputStream fos=new FileOutputStream(%%2);
//获取Entry对象实例
ZipEntry entry=zipin.getNextEntry();
byte[] buffer=new byte[1024];
int nNumber;
while((nNumber=zipin.read(buffer,0,buffer.length))!=-1)
fos.write(buffer,0,nNumber);
//关闭文件流对象
zipin.close();
fos.close();
fis.close();
}
catch(IOException e){
System.out.println(e);
}
43.递归删除目录中的文件
/*
import java.io.*;
import java.util.*;
*/
ArrayList<String> folderList= new ArrayList<String>();
folderList.add(%%1);
for(int j= 0; j< folderList.size(); j++){
File file= new File(folderList.get(j));
File[] files= file.listFiles();
ArrayList<File> fileList= new ArrayList<File>();
for(int i= 0; i< files.length; i++){
if(files[i].isDirectory()){
folderList.add(files[i].getPath());
} else{
fileList.add(files[i]);
}
}
for(File f: fileList){
f.delete();
}
}
43.ZIP压缩文件夹
/*
import java.io.*;
import org.apache.tools.zip.ZipOutputStream;//这个包在ant.jar里,要到官方网下载
//java.util.zip.ZipOutputStream
import java.util.zip.*;
*/
try{
String zipFileName=%%2;//打包后文件名字
File f=new File(%%1);
ZipOutputStream out= new ZipOutputStream(new FileOutputStream(zipFileName));
String base="";
if(f.isDirectory()){
File[] fl= f.listFiles();
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base+"/"));
base= base.length()== 0?"": base+"/";
for(int i= 0; i< fl.length; i++){
zip(out, fl[i], base+ fl[i].getName());
}
}else{
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
FileInputStream in= new FileInputStream(f);
int b;
while((b= in.read())!=-1){
out.write(b);
}
in.close();
}
out.close();
}catch(Exception ex){
ex.printStackTrace();
}
/*
切,我刚好写了个压缩的,但没写解压的
1.解压的(参数两个,第一个是你要解压的zip文件全路径,第二个是你解压之后要存放的位置)
/*
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
*/
public class ZipFileList{
public static void main(String[] args){
extZipFileList(args[0],args[1]);
}
private static void extZipFileList(String zipFileName, String extPlace){
try{
ZipInputStream in= new ZipInputStream(new FileInputStream(
zipFileName));
ZipEntry entry= null;
while((entry= in.getNextEntry())!= null){
String entryName= entry.getName();
if(entry.isDirectory()){
File file= new File(extPlace+ entryName);
file.mkdirs();
System.out.println("创建文件夹:"+ entryName);
} else{
FileOutputStream os= new FileOutputStream(extPlace
+ entryName);
// Transfer bytes from the ZIP file to the output file
byte[] buf= new byte[1024];
int len;
while((len= in.read(buf))> 0){
os.write(buf, 0, len);
}
os.close();
in.closeEntry();
}
}
} catch(IOException e){
}
System.out.println("解压文件成功");
}
}
压缩的(参数最少传两个,第一个是你压缩之后的文件存放的位置以及名字,第二个是你要压缩的文件或者文件夹所在位置,也可以传多个文件或文件夹)
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileOther{
public static String zipFileProcess(ArrayList outputZipFileNameList, String outputZipNameAndPath){
ArrayList fileNames= new ArrayList();
ArrayList files= new ArrayList();
FileOutputStream fileOut= null;
ZipOutputStream outputStream= null;
FileInputStream fileIn= null;
StringBuffer sb= new StringBuffer(outputZipNameAndPath);
// FileInputStream fileIn=null;
try{
if(outputZipNameAndPath.indexOf(".zip")!=-1){
outputZipNameAndPath= outputZipNameAndPath;
} else{
sb.append(".zip");
outputZipNameAndPath= sb.toString();
}
fileOut= new FileOutputStream(outputZipNameAndPath);
outputStream= new ZipOutputStream(fileOut);
int outputZipFileNameListSize= 0;
if(outputZipFileNameList!= null){
outputZipFileNameListSize= outputZipFileNameList.size();
}
for(int i= 0; i< outputZipFileNameListSize; i++){
File rootFile= new File(outputZipFileNameList.get(i).toString());
listFile(rootFile, fileNames, files,"");
}
for(int loop= 0; loop< files.size(); loop++){
fileIn= new FileInputStream((File) files.get(loop));
outputStream.putNextEntry(new ZipEntry((String) fileNames.get(loop)));
byte[] buffer= new byte[1024];
while(fileIn.read(buffer)!=-1){
outputStream.write(buffer);
}
outputStream.closeEntry();
fileIn.close();
}
return outputZipNameAndPath;
} catch(IOException ioe){
return null;
} finally{
if(outputStream!= null){
try{
outputStream.close();
} catch(IOException e){
}
}
if(fileIn!= null){
try{
fileIn.close();
} catch(IOException e){
}
}
}
}
public static void main(String[] args){
ArrayList outputZipFileName=new ArrayList();
String savePath="";
int argSize= 0;
if(args!= null){
argSize= args.length;
}
if(argSize> 1){
if(args[0]!=null)
savePath= args[0];
for(int i=1;i<argSize;i++){
if(args[i]!=null){
outputZipFileName.add(args[i]);
}
}
ZipFileOther instance=new ZipFileOther();
instance.zipFileProcess(outputZipFileName,savePath);
} else{
}
}
private static void listFile(File parentFile, List nameList, List fileList, String directoryName){
if(parentFile.isDirectory()){
File[] files= parentFile.listFiles();
for(int loop= 0; loop< files.length; loop++){
listFile(files[loop], nameList, fileList, directoryName+ parentFile.getName()+"/");
}
} else{
fileList.add(parentFile);
nameList.add(directoryName+ parentFile.getName());
}
}
}
*/
怎么使用java解压带密码的7z,rar,tar,zip等压缩文件
要使用Java解压带密码的7z、rar、tar、zip等压缩文件,首先应当了解不同压缩格式的解压命令。以7z为例,可以查看其命令行帮助,获取解压所需的基本命令和参数。
在实际操作中,发现7z并不完全支持rar格式的文件,这意味着需要专门处理rar格式。不过,对于其他四种格式(7z、rar、tar、zip),它们的命令行工具相对完善,因此可以选择只研究rar的命令行工具。设计一套工具类,专门针对rar格式进行解压,同时集成其他格式的解压功能。这样不仅减少了代码量,还提高了代码的复用性。
在使用Java解压带密码的文件时,重要的是正确设置解压命令中的密码参数。例如,在使用rar解压rar文件时,需要确保密码参数(如“-p”)正确包含在命令中。同样地,对于7z、tar和zip文件,也要确保解压命令中包含密码信息。
具体实现上,可以利用Java的ProcessBuilder类或者Runtime.exec方法来执行外部命令行工具(rar、7z等)。在执行命令前,需要构造命令字符串,包括解压路径、输入文件路径、输出目录、以及必要的参数(如密码)。确保在构造命令字符串时,正确处理参数,避免参数间出现空格等问题。
总结而言,使用Java解压带密码的7z、rar、tar、zip等压缩文件,可以通过研究rar的命令行工具来设计一套通用的解压工具类,实现对多种格式文件的解压。在使用命令行工具时,注意正确设置密码参数,并正确构造命令字符串执行解压操作。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!