问题描述:
JAVA 程序中如何实现对RAR压缩包文件中文件格式的判断?
解析:
JAVA中使用java.util.zip.ZipOutputStream在对文件进行压缩时,将把每一个文件实体封装为java.util.zip.ZipEntry,反之,在使用java.util.zip.ZipInputStream在对文件进行解压缩时,每个文件的访问也是通过访问ZipEntry对象来 *** 作的,可以通过ZipEntry对象的getName()来得到当初压缩时对该文件的命名(通常为该文件相对路径),当然得到了该文件命名自然就可以对文件格式进行判断了!
可以,压缩只是一种算法,什么语言都可以,比如某种格式的文件中1001010(二进制)代表汉子的"中"字,那么压缩算法就是在编码不冲突的情况下可以改变编码长度,比如压缩之后中字变成1010,这样就节省空间了,这是我随便举的例子,具体的对应算法可以网上查java中有zip包,可以使用
public void getZipFiles(String zipFile, String destFolder) throws IOException {BufferedOutputStream dest = null
ZipInputStream zis = new ZipInputStream(
new BufferedInputStream(
new FileInputStream(zipFile)))
ZipEntry entry
while (( entry = zis.getNextEntry() ) != null) {
System.out.println( "Extracting: " + entry.getName() )
int count
byte data[] = new byte[BUFFER]
if (entry.isDirectory()) {
new File( destFolder + "/" + entry.getName() ).mkdirs()
continue
} else {
int di = entry.getName().lastIndexOf( '/' )
if (di != -1) {
new File( destFolder + "/" + entry.getName()
.substring( 0, di ) ).mkdirs()
}
}
FileOutputStream fos = new FileOutputStream( destFolder + "/"
+ entry.getName() )
dest = new BufferedOutputStream( fos )
while (( count = zis.read( data ) ) != -1)
dest.write( data, 0, count )
dest.flush()
dest.close()
}
}
rar的只能用第三方api,比如junrar
https://github.com/edmund-wagner/junrar
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)