项目告急!!项目告急!!高手快来,解zip包的中文问题
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class TestZip
{
static byte[] b;
static ZipEntry ze;
static int size;
static String name;
static int i=0;
static StringTokenizer sToken;
static String[] dirFileName;
static String dirName;
static String fileName;
static int j;
static File dir;
static int slen;
public static void main(String args[])
{
try{
FileInputStream fi=new FileInputStream("c://Pack.zip");
BufferedInputStream bi=new BufferedInputStream(fi);
ZipInputStream zi=new ZipInputStream(bi);
while((ze=zi.getNextEntry())!=null)
{
if (ze.isDirectory())
{
System.out.println( ze.getName() );
dir=new File("c://test/"+ze.getName()) ;//改为在服务器上的实际目录(不能重复)!!
dir.mkdirs();
continue;
}
name=ze.getName();
System.out.println(name);
size=(int)ze.getSize();
sToken=new StringTokenizer(name,"/",true);
dirFileName=new String[sToken.countTokens()];
j=sToken.countTokens();
for(int i=0;i<j;i++)
{
dirFileName[i]=sToken.nextToken();
}
dirName=new String("c://test/"); //改为在服务器上的实际目录(不能重复)!!
for(int i=0;i<(j-1);i++)
{
dirName=dirName.concat(dirFileName[i]);
}
fileName=dirFileName[j-1];
System.out.println(dirName+"-----"+fileName);
File file=new File(dirName+fileName);
File dir=new File(dirName);
if(!dir.exists())
{
dir.mkdirs();
}
FileOutputStream fo=new FileOutputStream(dirName+fileName);
b=new byte[1024];
while( (slen=zi.read(b,0,b.length))!=-1)
{
fo.write(b,0,slen);
//Date time=new Date();
}
fo.close();
zi.closeEntry();
}
zi.close();
}catch(Exception e){e.printStackTrace();}
}
/*public static String make8859toGB(String str)
{
try
{
String str8859 = new String(str.getBytes("8859_1"));
return str8859;
}
catch(UnsupportedEncodingException ioe)
{
return str;
}
}*/
}