问题标签 [zipinputstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 从 ZipFileInputStream 读取 UTF-8 字符串
我正在尝试从 zipFile 读取 UTF-8 文件,结果证明这是一个重大挑战。
在这里,我将字符串压缩到字节数组以保存到我的数据库。
这就是我读回字符串的方式:
我回到这里的字符串丢失了 UTF8 字符!
更新 1: 我更改了代码,以便将原始字符串的字节数组与从 zipfile 读回的字节数组进行比较,它们非常匹配!所以这可能是我在获得字节后构建字符串的方式。
Arrays.equals(已转换,orgi)
java - how to replacing some files within a certain directory inside a jar file?
I'm having the problem of replacing or updating some files within a certain directory inside a jar file.
I've read a few post already. The code (the JarUpdater Class) given at this link Updating .JAR's contents from code
is being very helpful for me to understand the role and the use of ZipInputStream, ZipOutputStream and ZipEntry, etc..
However, when I run it,
- I have an EOF Exception
[EDITED by mk7: I found out the jar file was corrupted after I went through it 20 times or so. So after I replaced the jar file with a new one, the EOF Exception went away. The other two problems below still remains unsolved]
these two new xml files only get copied to the "root directory" of the jar file.
these two new xml files NEVER replaced the two original files inside a directory called /conf.
Which lines of code should I change in order to replace the xml files with the new ones?
With the System.out.println, I did see that the while loop steps through every directory and compare at every file as expected. A new temp jar was also created as expected... I thought the statement "notInFiles = false" would take care of my need but it's NOT.
How do I step into the /conf and only replace those two files and NOT leave a copy at the root of the jar file?
What am I missing? Thanks for any insight!
Below are the code from that link.
git - 无法迭代从 JAVA 中的私有 git 下载的 zip 文件
我有一小段代码可以从 github 下载一个 zip 文件。我已经以这种格式插入了令牌https://token:x-oauth-basic@github.xxxx.com/org/repo/archive/branch.zip。下载有效,但当我这样做时
zis.getNextEntry() 返回 null 尽管 zip 中有很多内容。此代码适用于任何其他 zip,但不适用于使用令牌从 github 下载的 zip。
任何帮助都会非常有用。
java - 如何使用 ZipOutputStream 创建压缩的 Zip 存档,以便 ZipEntry 的 getSize() 方法返回正确的大小?
考虑将单个文件test_file.pdf
放入 zip 存档test.zip
然后读取此存档的代码示例:
输出:
Entry size: -1
但是如果创建未压缩的 zip 存档(方法ZipEntry.STORED
), getSize() 会返回正确的大小:
输出(例如但正确):
Entry size: 9223192
存在正确的压缩 zip 档案entry.getSize()
(例如 Ark 程序的 zip 档案)。
所以问题:如何创建仅使用标准库返回正确大小的条目的压缩(ZipEntry.DEFLATED
或另一个,如果存在)zip存档?
我尝试了这个建议,但它也不起作用:
输出:
Entry size: -1
java - 如何定义读取所有 InputStreams 包括 ZipInputStream 的方法?
我之前问过一次,我的帖子因为没有提供使用帮助类的代码而被删除。这次我创建了一个完整的测试套件来显示确切的问题。
我认为 Java 的 ZipInputStream 打破了关于 InputStream 抽象类的 Liskov 替换原则 (LSP)。如果 ZipInputStream 是 InputStream 的子类型,那么程序中 InputStream 类型的对象可以被 ZipInputStream 类型的对象替换,而不会改变该程序的任何所需属性(正确性、执行的任务等)。
这里违反 LSP 的方式是针对 read 方法。
InputStream.read(byte[], int, int) 声明它返回:
读入缓冲区的总字节数,如果由于到达流的末尾而没有更多数据,则为 -1。
ZipInputStream 的问题在于它修改了 -1 返回值的含义。它指出:
读取的实际字节数,如果到达条目的末尾,则为 -1
(实际上,Android 文档http://developer.android.com/reference/java/util/zip/ZipInputStream.html中的可用方法有类似问题的提示)
现在来看演示问题的代码。(这是我实际尝试做的缩减版,请原谅任何糟糕的风格、多线程问题或流是高级的事实等)。
接受任何 InputStream 以生成流的 SHA1 的类:
单元测试:
回到问题上来……违反了 LSP,因为您可以读取 InputStream 的流末尾,但不能读取 ZipInputStream ,当然这会破坏任何尝试以这种方式使用它的方法的正确性属性.
有什么方法可以实现这一点,还是 ZipInputStream 从根本上存在缺陷?
java - 从 ZipInputStream 获取特定文件
我可以通过ZipInputStream
,但在开始迭代之前,我想获得迭代期间需要的特定文件。我怎样才能做到这一点?
java - 有没有办法从 ZipInputStream 读取特定文件而不必遍历整个条目集?
我想知道是否有一种方法可以直接从ZipFile
/读取特定文件,ZipInputStream
而无需遍历整个条目集。如果存档包含大量文件,我想这可能是相当大的开销。有没有更好的办法?
我知道这可以做到,TrueZip
而且我之前已经做到了,但我想知道 1.8 SDK 现在是否包含更合适的东西......?
java - 从 zip 文件中读取的 XML 文件中删除空格
我正在读取存储在 zip 文件中的 XML 文件。我需要删除空格,但我似乎没有任何效果。这就是我所拥有的,但 trim() 没有做任何事情。
java - 使用 ZipInputStream 读取和修改内部 zip 文件的内容
我正在尝试使用 ZipInputStream 修改 web.xml。要读取的文件是 web.xml,它位于 ear/war 文件中
C:/XX.ear/YY.war/WEB-INF/web.xml
new ZipInputStream( zipFile .getInputStream(zipEntry)) 我无法指向内部 zip 文件来获取内部战争文件的输入流
是否可以将内部 zipentry 读取为输入流?
java - 使用 zipInputStream 从服务器下载 ZipFile
我想从服务器中提取并保存传入的 ZipFile。
这段代码只有一半的时间有效。
我认为问题是,方法 zipStream.getNextEntry() 在数据传入之前被调用,我如何等待传入数据读取?