Java ZipFile构造函数-使用其模式和字符集参数的正确方法
是ZipFile构造函数吗Java ZipFile构造函数-使用其模式和字符集参数的正确方法,java,zip,zipfile,Java,Zip,Zipfile,是ZipFile构造函数吗 ZipFile(File file, int mode, Charset charset) throws IOException mode和charset参数是如何准确使用的?它们是干什么用的 1模式=ZipFile.OPEN\u删除 文件何时被删除 此外,这并不是在zip存档中删除单独的文件——为什么我不使用file.delete或file.deleteOnExit删除我的zip文件呢 该文件将在被删除之间的某个时间被删除 打开和关闭的那一刻,但其内容仍将保留
ZipFile(File file, int mode, Charset charset) throws IOException
mode和charset参数是如何准确使用的?它们是干什么用的
1模式=ZipFile.OPEN\u删除
文件何时被删除
此外,这并不是在zip存档中删除单独的文件——为什么我不使用file.delete或file.deleteOnExit删除我的zip文件呢
该文件将在被删除之间的某个时间被删除
打开和关闭的那一刻,但其内容仍将保留
可通过ZipFile对象访问,直到关闭方法
调用或虚拟机退出
因此,我删除了如下文件:
try {
ZipFile zf = new ZipFile(new File("myZipFile.zip"), ZipFile.OPEN_DELETE);
// file name and comment are not read in this binary stream, do they?
zf.getInputStream(zf.getEntry("dirInZip/fileInsideZip.txt"));
// some operations
zf.close(); // closes InputStream and deletes myZipFile.zip ?
} catch (IOException e) {
// handling
}
2字符集参数:
用于解码ZIP条目名称和注释的字符集
如果ZIP条目的常规
设置目的位标志
我一点也不明白
在运行某些zip实用程序之前,要压缩的文件名可能是非UTF编码的,理论上,在非常旧的Windows上,可能是Windows-1252代码页,等等,除此之外,当我运行WinZip或其他东西时,我可以复制粘贴非UTF文本作为注释-但是否有一些标准文件名和注释应如何存储在ZIP中?我的意思是WinZip或类似的东西会在压缩之前强制/更改编码为UTF-8
2.1在这种情况下,我可能希望Zip中包含非UTF文件名和注释
2.2使用myZipFile.getEntrydirInZip/fileInsideZip.txt,我使用的是本质上是UTF16的java字符串,那么我为什么要关心编码呢?我只是将任何内容写入java字符串,对吗?我认为1已经足够清楚了:文件在某个点被删除,但由于加载到内存中,所以仍然可以访问。有什么不清楚的 Re 2,当从外部源读取文本时,您需要知道其编码并使用该编码对文本进行解码。实际上,您正在读取的是一个二进制流,因此需要知道用于编码原始字符的方法。下一步是如何存储该文本,例如Java UTF-16