小编Dan*_*ral的帖子

用Java解压缩内存中的ZIP文件

我正在下载包含XML的压缩文件,我想避免在操作它们之前将zip文件写入磁盘,因为延迟要求.但是,java.util.zip对我来说还不够.没有办法说"这是一个zip文件的字节数组,使用它"而不将其转换为流,并且ZipInputStream不可靠,因为它会扫描条目标题(请参阅下面的编辑,了解为什么不可靠).

我还没有访问我将要处理的zip文件,所以我不知道我是否能够通过它来处理它们ZipInputStream,我需要找到一个适用于任何有效ZIP文件的解决方案,作为一旦我投入生产失败的惩罚将会很高.

假设ZipInputStream不起作用,在没有条目头的情况下,我该怎么做才能解决这个问题?我正在使用维基百科的定义,其中包括如何正确解压缩zip文件(下面引用)作为标准.

编辑

Apache Commons Zip库对使用Stream(他们的解决方案和Java)的一些问题进行了很好的描述.我将进一步补充,从维基百科和个人经验来看,条目标题上的大小和crc字段可能无法填充(我在这些字段中的文件为-1).感谢centic提供此链接.

另外,让我引用维基百科的主题:

正确读取zip存档的工具必须扫描各个字段的签名,即zip中心目录.它们不能扫描条目,因为只有目录指定文件块的开始位置.扫描可能导致误报,因为格式不禁止其他数据在块之间或包含此类签名的未压缩流之间.

请注意,ZipInputStream扫描条目,而不是中心目录,这是它的问题.

最终编辑

如果有人感兴趣,可以使用此脚本生成无法ZipInputStream从现有ZIP文件中读取的有效ZIP文件.因此,作为对这个封闭问题的最终编辑,我需要一个可以读取文件的库,例如这个脚本生成的文件.

java zip

28
推荐指数
1
解决办法
2万
查看次数

如何在Scala中写出毕达哥拉斯定理?

直角三角形的斜边的平方等于另外两边的平方的总和.

这是毕达哥拉斯定理.基于其边的长度"a"和"b"来计算斜边的函数将返回sqrt(a*a + b*b).

问题是,你如何在Scala中定义这样一个函数,以便它可以用于实现适当方法的任何类型?

对于上下文,根据您正在做的事情以及速度,精度,准确度和范围要求,想象您想要使用Int,Double,Int-Rational,Double-Rational,BigInt或BigInt-Rational类型的整个数学定理库. .

scala

24
推荐指数
2
解决办法
3423
查看次数

Apache HttpClient 4.1 - 代理验证

我一直在尝试使用Apaches HttpComponent的httpclient从配置的属性配置代理身份验证的用户和密码,但没有成功.我找到的所有示例都引用了不再可用的方法和类,例如HttpStatesetProxyCredentials.

那么,有人能举例说明如何配置代理凭证吗?

java proxy proxy-authentication apache-httpclient-4.x

24
推荐指数
4
解决办法
6万
查看次数

如何在多项目构建中排除其他子项目的传递依赖关系?

Build.scala我有项目之间的依赖关系:

val coreLib = Projects.coreLib()
val consoleApp = Projects.consoleApp().dependsOn(coreLib)
val androidApp = Projects.androidProject().dependsOn(coreLib/*, exclusions = xpp */)
Run Code Online (Sandbox Code Playgroud)

核心库项目在其libraryDependencies(XPP解析器)中定义了一个库,我希望将其排除在外androidApp,因为Android框架具有开箱即用的自己的XPP实现.

如何从项目中的传递依赖项coreLib中排除XPP库androidApp

编辑:

根据我的研究,排除仅可能ModuleID与之结合使用libraryDependency.同时dependsOn将所有传递依赖项放到classpath中,api中没有办法排除这个项目的一些传递依赖项,你dependsOn

细节:

我目前正在运行0.13.5.

libraryDependenciescommonLib以及build.sbt中提供的各种设置,以便该项目可以作为独立的方式重用,并且因为它感觉正确且自然地提供设置sbt.

android scala sbt sbt-0.13

20
推荐指数
1
解决办法
2724
查看次数

Windows Vista 64位的命令行subversion客户端

有没有人推荐任何特定的Windows命令行SVN客户端.64位将是一个奖励.

我确实有TortoiseSVN,但它没有命令行,这是我的构建脚本所必需的.我搜索了颠覆网站,发现不是一个,而是四个不同的选项.所以,我的问题.

svn windows 64-bit windows-vista

19
推荐指数
1
解决办法
2万
查看次数

java.util.Calendar线程是否安全?

我一直在假设既不是线程安全Date也不Calendar是线程安全的,但是,在最近的讨论中,一位同事告诉我Calendar是线程安全的.

所以,我做了一些研究,并没有提出任何建议.有很多人认为它是线程安全的,很多人认为它不是线程安全的.而且,最重要的是,文档不会以某种方式说出任何内容,不是为了Calendar,甚至也不是Date.

那么,这是什么?

java calendar

18
推荐指数
1
解决办法
2万
查看次数

在Jenkins管道上列出工作区上的文件

我正在尝试在Jenkins管道中列出工作区中的文件,以便我可以使用它来生成适当的并行任务.

虽然我可以简单地使用sh ls > files和阅读它,但我想要的File对象可以用更复杂的逻辑进一步过滤.事实上,Files.listFiles(FileFilter)将是理想的.

但是,我根本无法获取文件列表.首先,我不得不求助于一些奇怪的东西来简单地找出构建的当前工作目录:

sh 'pwd > workspace'
workspace = readFile('workspace').trim()
Run Code Online (Sandbox Code Playgroud)

现在我调用它来检索文件列表:

@NonCPS
def getFiles(String baseDir) {
    Arrays.asList(new File(baseDir).listFiles())
}
Run Code Online (Sandbox Code Playgroud)

并获得一个NPE asList,这意味着,通过我读取的javadoc,它new File(baseDir)不存在(或者不是目录).

我正在标记它,@NonCPS因为它对于Pipeline上的groovy闭包是必需的,我更喜欢使用完整的java <1.8语法.

groovy jenkins jenkins-pipeline

18
推荐指数
4
解决办法
5万
查看次数

如何使用gitlab和LDAP身份验证设置管理员用户?

我刚刚设置了gitlab,但我对管理员用户完全失去了兴趣.维基似乎对这个话题保持沉默,谷歌也没有帮助.

那么,如何在LDAP身份验证中使用gitlab设置管理员用户?

authentication ldap gitlab

16
推荐指数
4
解决办法
2万
查看次数

在Stash上触发构建对Stash的拉取请求?

我想知道是否可以使用请求构建器插件配置类似于Jenkins + Github所完成的内容.具体来说,当在Stash上创建pull请求时,使用构建的pull请求分支触发Bamboo上的构建.

更新pull请求时触发新构建的奖励点,或者通过注释(如Jenkins插件)给出某些命令的奖励点.

我看不到这样做的方法,我甚至看不到一种方法来创建一个可以实现的插件.也许插件的合并检查触发器可以工作,但看起来有人在查看拉取请求时触发了某些事情,而不是拉动请求到达时触发的事情.

continuous-integration bamboo bitbucket-server

16
推荐指数
1
解决办法
2553
查看次数

将java.time转换为Calendar

Calendarjava.time.Instant或获取对象的最简单方法是java.time.ZonedDateTime什么?

java java-time

16
推荐指数
1
解决办法
8384
查看次数