保持目录结构压缩? 要是在Linux下用的话就调用shell好了。我做过一个压缩几个文件到一个zip中的小东东。
解决方案 »
- 程序算出来的数和计算器算出来的不一样
- java读取文本问题
- 调用exe文件,有谁知道怎么处理麽?在线等...
- 关于mark(int readlimit)的参数readlimit
- file类的createTempFile建立文件,建立出来的文件,指定的文件名后为什么带一堆数字
- 给出一个String参数 如何返回这个 String参数对应的类
- Himalayas 是何物?
- 单击按钮弹出下拉菜单,为什么鼠标移动到菜单上时,不高亮显示?(swing)急!绝对给分
- 新手上路,多多关照!怎样成为一个熟练的java工人?呵呵
- 如何发布JAVA文件?
- sun 的JMF(Java Media Framework)可以播放视频吗?
- jbuilder的ipworks.jar编译出错
要跟别的系统数据对接。
那个系统倒出的数据是用zip格式打包的
我还要导出我的数据让他可以输入!!!
现在我可以读到他的数据了,但是不懂压缩zip包倒入他的系统!!
ZipEntry ze = new ZipEntry( 文件名);
// Initialize entry with the current time.
ze.setTime( System.currentTimeMillis() );
// These statements are for demonstrative purposes
// and not necessary.
ze.setMethod(ZipEntry.DEFLATED);
ze.setExtra(new byte[]{(byte)'X'});
// Add the zip entry.
jos.putNextEntry(ze);
// Now write the zip entry data.
jos.write( 文件的内容 );
// will close the zip entry.
jos.closeEntry();
剩下的就是写一个递归程序遍历整个目录了
/*
Use: java ZipFiles zipFileName file1 file2 file3 file4 ...
*/
import java.io.*;
import java.util.*;
import java.util.zip.*;public class ZipFiles
{
public static void main(String[] args)
{
int i=0;
if((args.length<2)||(args.length>20))
{
System.out.println("Use: java ZipFiles zipFileName file1 file2 file3 file4 ...");
System.out.println("files number can not be larger than 20!");
System.exit(0);
}
//取得待压缩的文件名
String s_zipName=args[0];
String[] s_files_will_be_ziped=new String[20];
int i_count_will_be_ziped_files=args.length-1;
for(i=1;i<args.length;i++)
{
s_files_will_be_ziped[i-1]=args[i];
}
//print
System.out.println("below files will be ziped!");
for(i=0;i<i_count_will_be_ziped_files;i++)
System.out.println("file---->"+s_files_will_be_ziped[i]);
//压缩
System.out.println("compressing... ... ...");
System.out.println("compressed "+zip_files(s_files_will_be_ziped,i_count_will_be_ziped_files,s_zipName)+" files");
} //end main
/* method zip_files() : version 1.2 2001/07/05 */
static int zip_files(String[] s_temp,int i_count_files,String s_ziped_fileName)
{
String s_current_path_fileName=""; //带路径的文件名
String s_current_fileName=""; //不带路径的文件名
String[] s_fileNames=new String[100];
byte[] buffer=new byte[1024]; //为读入文件分配缓冲区
int bytesRead=0; //读输入文件的字节数
int i=0;
//先做一些校验工作----------------------------------------
try
{
if((i_count_files<=0)||(i_count_files>99)||(!(s_ziped_fileName.endsWith(".zip"))))
return 0;
//检验待压缩的文件是否正确
int j=0;
for(i=0;i<i_count_files;i++)
{
File f_test=new File(s_temp[i]);
if(f_test.isFile())
{
s_fileNames[j]=s_temp[i];
j++;
}
}
i_count_files=j;
}
catch(Exception ee_345)
{
return 0;
}
//正式开始压缩--------------------------------------------
try
{
ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(s_ziped_fileName));
//使用一个循环,得到用户需压缩的所有文件
for(i=0;i<i_count_files;i++)
{
//得到需压缩的文件名
s_current_path_fileName=s_fileNames[i];
//打开文件
FileInputStream in=new FileInputStream(s_current_path_fileName);
//创建一个zip文件记录,并将其增加到zip文件中
File f_ttt=new File(s_current_path_fileName);
s_current_fileName=f_ttt.getName(); //生成不带路径的文件名
ZipEntry entry=new ZipEntry(s_current_fileName);
zip.putNextEntry(entry); //zip文件中再加入一项
//从文件中读数据并增加到zip文件中
while((bytesRead=in.read(buffer))!=-1)
zip.write(buffer,0,bytesRead);
//显示结果
//System.out.println(entry.getName()+" added.");
in.close();
} //end for
zip.close();
//System.out.println("zip file "+zipName+" created.");
return i_count_files;
}
catch(Exception ex)
{
//System.out.println(ex);
return 0;
}
} //end zip_files()
} //end class ZipFiles