67,512
社区成员
发帖
与我相关
我的任务
分享
public void unRarFile(String rarFileName,String extPlace)
{
Archive archive = null;
File out = null;
File file = null;
File dir = null;
FileOutputStream os = null;
FileHeader fh = null;
String path, dirPath = "";
try
{
file = new File(rarFileName);
System.out.println("file.getName = "+file.getName());
archive = new Archive(file);
}
catch (RarException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
finally
{
if (file != null)
{
file = null;
}
}
if (archive != null)
{
try
{
fh = archive.nextFileHeader();
while (fh != null)
{
path = (extPlace + fh.getFileNameString().trim()).replaceAll("\\\\", "/");
int end = path.lastIndexOf("/");
if (end != -1)
{
dirPath = path.substring(0, end);
}
try
{
dir = new File(dirPath);
if (!dir.exists())
{
dir.mkdirs();
}
}
catch (RuntimeException e1)
{
e1.printStackTrace();
}
finally
{
if (dir != null)
{
dir = null;
}
}
if (fh.isDirectory())
{
fh = archive.nextFileHeader();
continue;
}
out = new File(extPlace + fh.getFileNameString().trim());
try
{
os = new FileOutputStream(out);
archive.extractFile(fh, os);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (RarException e)
{
e.printStackTrace();
}
finally
{
if (os != null)
{
try
{
os.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (out != null)
{
out = null;
}
}
fh = archive.nextFileHeader();
}
}
catch (RuntimeException e)
{
e.printStackTrace();
}
finally
{
fh = null;
if (archive != null)
{
try
{
archive.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
2010-6-16 15:13:56 de.innosystec.unrar.Archive setFile
警告: exception in archive constructor maybe file is encrypted or currupt
java.lang.NullPointerException
at de.innosystec.unrar.Archive.readHeaders(Archive.java:233)
at de.innosystec.unrar.Archive.setFile(Archive.java:122)
at de.innosystec.unrar.Archive.<init>(Archive.java:106)
at de.innosystec.unrar.Archive.<init>(Archive.java:96)
at ZipManager.unRarFile(ZipManager.java:371)
at ZipManager.main(ZipManager.java:490)