java.util.zip 类 ZipEntry

java.util.zip
类 ZipEntry

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

public class ZipEntry
    
    
     
     extends Object
    
    
    
    
     
     implements 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.util.zip.ZipException: no current ZIP entry" 错误通常是因为在创建 ZIP 文件时没有正确设置 ZIP 文件的当前条目。 在上述示例中,确保在将文件添加到 ZIP 文件中时,使用正确的 `putNextEntry` 方法来设置当前的 ZIP 条目。以下是修改后的示例代码: ```java import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import java.io.*; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class S3FileFilterExample { public static void main(String[] args) throws IOException { S3Client s3Client = S3Client.builder() .region(Region.YOUR_REGION) .credentialsProvider(DefaultCredentialsProvider.create()) .build(); String bucketName = "your-bucket-name"; String folderPath = "your-folder-path"; Instant startTime = Instant.now().minus(1, ChronoUnit.DAYS); // 设置起始时间,这里设置为1天前 Instant endTime = Instant.now(); // 设置结束时间,这里设置为当前时间 ListObjectsV2Request listRequest = ListObjectsV2Request.builder() .bucket(bucketName) .prefix(folderPath) .build(); ListObjectsV2Response listResponse = s3Client.listObjectsV2(listRequest); File zipFile = new File("path/to/save/zip/file.zip"); try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFile))) { for (S3Object s3Object : listResponse.contents()) { if (s3Object.lastModified().isAfter(startTime) && s3Object.lastModified().isBefore(endTime)) { GetObjectRequest getRequest = GetObjectRequest.builder() .bucket(bucketName) .key(s3Object.key()) .build(); ResponseBytes<GetObjectResponse> responseBytes = s3Client.getObjectAsBytes(getRequest); // 将文件添加到 ZIP 文件中 zipOutputStream.putNextEntry(new ZipEntry(s3Object.key())); zipOutputStream.write(responseBytes.asByteArray()); zipOutputStream.closeEntry(); } } } } } ``` 确保适当地调用 `zipOutputStream.putNextEntry` 来设置当前的 ZIP 条目,然后将文件内容写入 ZIP 文件中。这样可以避免 "no current ZIP entry" 错误。 如果你仍然遇到问题,请检查你的代码并确保正确设置了 ZIP 条目。另外,还要注意防止尝试使用空的 ZIP 条目进行写入操作。 希望这能解决你的问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值