java.util.zip 类 ZipEntry

本文详细介绍Java中ZipEntry类的功能及用法,包括字段说明、构造方法及常用方法介绍,适用于需要处理ZIP文件的开发者。

java.util.zip
类 ZipEntry

java.lang.Object
  继承者 java.util.zip.ZipEntry
所有已实现的接口:
Cloneable
直接已知子类:
JarEntry

public class ZipEntryextends Objectimplements Cloneable

此类用于表示 ZIP 文件条目。


字段摘要
static intCENATT
           
static intCENATX
           
static intCENCOM
           
static intCENCRC
           
static intCENDSK
           
static intCENEXT
           
static intCENFLG
           
static intCENHDR
           
static intCENHOW
           
static intCENLEN
           
static intCENNAM
           
static intCENOFF
           
static longCENSIG
           
static intCENSIZ
           
static intCENTIM
           
static intCENVEM
           
static intCENVER
           
static intDEFLATED
          用于已压缩 (deflated) 条目的压缩方法。
static intENDCOM
           
static intENDHDR
           
static intENDOFF
           
static longENDSIG
           
static intENDSIZ
           
static intENDSUB
           
static intENDTOT
           
static intEXTCRC
           
static intEXTHDR
           
static intEXTLEN
           
static longEXTSIG
           
static intEXTSIZ
           
static intLOCCRC
           
static intLOCEXT
           
static intLOCFLG
           
static intLOCHDR
           
static intLOCHOW
           
static intLOCLEN
           
static intLOCNAM
           
static longLOCSIG
           
static intLOCSIZ
           
static intLOCTIM
           
static intLOCVER
           
static intSTORED
          用于未压缩条目的压缩方法。
 
构造方法摘要
ZipEntry(String name)
          使用指定名称创建新的 ZIP 条目。
ZipEntry(ZipEntry e)
          使用从指定 ZIP 条目获取的字段创建新的 ZIP 条目。
 
方法摘要
 Objectclone()
          返回此条目的副本。
 StringgetComment()
          返回条目的注释字符串;如果没有,则返回 null。
 longgetCompressedSize()
          返回压缩条目数据的大小;如果未知,则返回 -1。
 longgetCrc()
          返回未压缩条目数据的 CRC-32 校验和;如果未知,则返回 -1。
 byte[]getExtra()
          返回条目的额外字段数据;如果没有,则返回 null。
 intgetMethod()
          返回条目的压缩方法;如果未指定,则返回 -1。
 StringgetName()
          返回条目名称。
 longgetSize()
          返回条目数据的未压缩大小;如果未知,则返回 -1。
 longgetTime()
          返回条目的修改时间;如果未指定,则返回 -1。
 inthashCode()
          返回此条目的哈希码值。
 booleanisDirectory()
          如果为目录条目,则返回 true。
 voidsetComment(String comment)
          为条目设置可选的注释字符串。
 voidsetCompressedSize(long csize)
          设置压缩条目数据的大小。
 voidsetCrc(long crc)
          设置未压缩条目数据的 CRC-32 校验和。
 voidsetExtra(byte[] extra)
          为条目设置可选的额外字段数据。
 voidsetMethod(int method)
          设置条目的压缩方法。
 voidsetSize(long size)
          设置条目数据的未压缩大小。
 voidsetTime(long time)
          设置条目的修改时间。
 StringtoString()
          返回 ZIP 条目的字符串表示形式。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

STORED

public static final int STORED
用于未压缩条目的压缩方法。

另请参见:
常量字段值

DEFLATED

public static final int DEFLATED
用于已压缩 (deflated) 条目的压缩方法。

另请参见:
常量字段值

LOCSIG

public static final long LOCSIG
另请参见:
常量字段值

EXTSIG

public static final long EXTSIG
另请参见:
常量字段值

CENSIG

public static final long CENSIG
另请参见:
常量字段值

ENDSIG

public static final long ENDSIG
另请参见:
常量字段值

LOCHDR

public static final int LOCHDR
另请参见:
常量字段值

EXTHDR

public static final int EXTHDR
另请参见:
常量字段值

CENHDR

public static final int CENHDR
另请参见:
常量字段值

ENDHDR

public static final int ENDHDR
另请参见:
常量字段值

LOCVER

public static final int LOCVER
另请参见:
常量字段值

LOCFLG

public static final int LOCFLG
另请参见:
常量字段值

LOCHOW

public static final int LOCHOW
另请参见:
常量字段值

LOCTIM

public static final int LOCTIM
另请参见:
常量字段值

LOCCRC

public static final int LOCCRC
另请参见:
常量字段值

LOCSIZ

public static final int LOCSIZ
另请参见:
常量字段值

LOCLEN

public static final int LOCLEN
另请参见:
常量字段值

LOCNAM

public static final int LOCNAM
另请参见:
常量字段值

LOCEXT

public static final int LOCEXT
另请参见:
常量字段值

EXTCRC

public static final int EXTCRC
另请参见:
常量字段值

EXTSIZ

public static final int EXTSIZ
另请参见:
常量字段值

EXTLEN

public static final int EXTLEN
另请参见:
常量字段值

CENVEM

public static final int CENVEM
另请参见:
常量字段值

CENVER

public static final int CENVER
另请参见:
常量字段值

CENFLG

public static final int CENFLG
另请参见:
常量字段值

CENHOW

public static final int CENHOW
另请参见:
常量字段值

CENTIM

public static final int CENTIM
另请参见:
常量字段值

CENCRC

public static final int CENCRC
另请参见:
常量字段值

CENSIZ

public static final int CENSIZ
另请参见:
常量字段值

CENLEN

public static final int CENLEN
另请参见:
常量字段值

CENNAM

public static final int CENNAM
另请参见:
常量字段值

CENEXT

public static final int CENEXT
另请参见:
常量字段值

CENCOM

public static final int CENCOM
另请参见:
常量字段值

CENDSK

public static final int CENDSK
另请参见:
常量字段值

CENATT

public static final int CENATT
另请参见:
常量字段值

CENATX

public static final int CENATX
另请参见:
常量字段值

CENOFF

public static final int CENOFF
另请参见:
常量字段值

ENDSUB

public static final int ENDSUB
另请参见:
常量字段值

ENDTOT

public static final int ENDTOT
另请参见:
常量字段值

ENDSIZ

public static final int ENDSIZ
另请参见:
常量字段值

ENDOFF

public static final int ENDOFF
另请参见:
常量字段值

ENDCOM

public static final int ENDCOM
另请参见:
常量字段值
构造方法详细信息

ZipEntry

public ZipEntry(String name)
使用指定名称创建新的 ZIP 条目。

参数:
name - 条目名称
抛出:
NullPointerException - 如果条目名称为 null
IllegalArgumentException - 如果条目名称大于 0xFFFF 字节

ZipEntry

public ZipEntry(ZipEntry e)
使用从指定 ZIP 条目获取的字段创建新的 ZIP 条目。

参数:
e - ZIP Entry 对象
方法详细信息

getName

public String getName()
返回条目名称。

返回:
条目名称

setTime

public void setTime(long time)
设置条目的修改时间。

参数:
time - 自从出现以来以毫秒数表示的条目修改时间
另请参见:
getTime()

getTime

public long getTime()
返回条目的修改时间;如果未指定,则返回 -1。

返回:
条目的修改时间;如果未指定,则返回 -1
另请参见:
setTime(long)

setSize

public void setSize(long size)
设置条目数据的未压缩大小。

参数:
size - 以字节表示的未压缩大小
抛出:
IllegalArgumentException - 如果指定大小小于 0 或大于 0xFFFFFFFF 字节
另请参见:
getSize()

getSize

public long getSize()
返回条目数据的未压缩大小;如果未知,则返回 -1。

返回:
条目数据的未压缩大小;如果未知,则返回 -1
另请参见:
setSize(long)

getCompressedSize

public long getCompressedSize()
返回压缩条目数据的大小;如果未知,则返回 -1。对于 stored 条目,其压缩大小与该条目的未压缩大小相同。

返回:
压缩条目数据的大小;如果未知,则返回 -1
另请参见:
setCompressedSize(long)

setCompressedSize

public void setCompressedSize(long csize)
设置压缩条目数据的大小。

参数:
csize - 要设置的压缩大小
另请参见:
getCompressedSize()

setCrc

public void setCrc(long crc)
设置未压缩条目数据的 CRC-32 校验和。

参数:
crc - CRC-32 值
抛出:
IllegalArgumentException - 如果指定的 CRC-32 值小于 0 或大于 0xFFFFFFFF
另请参见:
getCrc()

getCrc

public long getCrc()
返回未压缩条目数据的 CRC-32 校验和;如果未知,则返回 -1。

返回:
未压缩条目数据的 CRC-32 校验和;如果未知,则返回 -1
另请参见:
setCrc(long)

setMethod

public void setMethod(int method)
设置条目的压缩方法。

参数:
method - 压缩方法,可以为 STORED 或 DEFLATED
抛出:
IllegalArgumentException - 如果指定压缩方法无效
另请参见:
getMethod()

getMethod

public int getMethod()
返回条目的压缩方法;如果未指定,则返回 -1。

返回:
条目的压缩方法;如果未指定,则返回 -1
另请参见:
setMethod(int)

setExtra

public void setExtra(byte[] extra)
为条目设置可选的额外字段数据。

参数:
extra - 额外字段数据字节
抛出:
IllegalArgumentException - 如果指定的额外字段数据的长度大于 0xFFFF 字节
另请参见:
getExtra()

getExtra

public byte[] getExtra()
返回条目的额外字段数据;如果没有,则返回 null。

返回:
条目的额外字段数据;如果没有,则返回 null
另请参见:
setExtra(byte[])

setComment

public void setComment(String comment)
为条目设置可选的注释字符串。

参数:
comment - 注释字符串
抛出:
IllegalArgumentException - 如果指定的注释字符串的长度大于 0xFFFF 字节
另请参见:
getComment()

getComment

public String getComment()
返回条目的注释字符串;如果没有,则返回 null。

返回:
条目的注释字符串;如果没有,则返回 null
另请参见:
setComment(String)

isDirectory

public boolean isDirectory()
如果为目录条目,则返回 true。目录条目定义为其名称以 '/' 结尾的条目。

返回:
如果为目录条目,则返回 true

toString

public String toString()
返回 ZIP 条目的字符串表示形式。

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。

hashCode

public int hashCode()
返回此条目的哈希码值。

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

clone

public Object clone()
返回此条目的副本。
覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable
`java.lang.ClassCastException: java.util.zip.ZipEntry` 是一个运行时异常,通常在Java程序中尝试将一个对象强制转换为不兼容的型时抛出。具体来说,当你在处理ZIP文件时,可能会遇到这种情况。 ### 原因 1. **型不匹配**:你尝试将一个`ZipEntry`对象转换为不兼容的型。例如: ```java Object obj = new ZipEntry("example.txt"); String str = (String) obj; // 这将抛出ClassCastException ``` 2. **错误的型转换**:在处理ZIP文件时,可能会错误地将`ZipEntry`对象转换为其他型。 ### 解决方法 1. **检查型转换**:确保在进行型转换之前,检查对象的实际型。 ```java Object obj = new ZipEntry("example.txt"); if (obj instanceof ZipEntry) { ZipEntry zipEntry = (ZipEntry) obj; // 现在可以安全地使用zipEntry } else { // 处理型不匹配的情况 } ``` 2. **使用泛型**:在可能的情况下,使用泛型来避免型转换错误。 ```java List<ZipEntry> zipEntries = new ArrayList<>(); zipEntries.add(new ZipEntry("example.txt")); for (ZipEntry entry : zipEntries) { // 直接使用ZipEntry对象 } ``` ### 示例代码 ```java import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.io.FileInputStream; import java.io.IOException; public class ZipExample { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.zip"); ZipInputStream zis = new ZipInputStream(fis)) { ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { if (entry instanceof ZipEntry) { System.out.println("File: " + entry.getName()); } } } catch (IOException e) { e.printStackTrace(); } } } ``` ### 总结 `ClassCastException`通常是由于型不匹配或错误的型转换引起的。在处理ZIP文件时,确保对`ZipEntry`对象的型进行正确的检查和转换,可以避免此异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值