ZIP条目存储条目的完整路径名,因为(我确定下一部分)ZIP存档未组织为目录.元数据包含有关如何存储文件的信息(内部目录).
如果我在Windows中创建ZIP文件,当我在另一个操作系统(例如Mac OS X)中解压缩数据时,文件结构将保持与以前一样在Windows中.这是因为unzipper是为处理这个而设计的,还是因为ZIP中的文件分隔符是标准的?
我问这个是因为我试图使用压缩文件的名称在ZIP文件中找到一个条目.但是我应该使用哪个文件分隔符使其在Windows以外的系统中运行?
我使用Java和方法:.getName()
的ZipEntry
让我使用Windows文件分隔符的路径\
.如果我使用java File.separator
分隔符使其在另一个操作系统上工作,这是否足够?或者我是否必须尝试使用每个可能的分隔符找到我的文件?
我已经使用FileSystem
java 7提供的成功修改了(现有)zip文件的内容,但是当我尝试通过此方法创建一个新的zip文件时,它失败了,并显示错误消息:"zip END header not found"
,这是合乎逻辑的,因为我这样做的方式,首先我创建一个文件(Files.createFile
),这是一个完全空的文件,然后我尝试访问它的文件系统,因为文件是空的,它不可能在zip中找到任何标题,我的问题是有没有办法用这个方法创建一个完全空的新zip文件?我考虑过的黑客是ZipEntry
在zip文件中添加一个空的新文件然后使用新的空文件来创建基于它的文件系统,但我真的想要认为oracle的人实现了更好(更容易)用nio和文件系统做到这一点的方法......
这是我的代码(创建文件系统时出现错误):
if (!zipLocation.toFile().exists()) {
if (creatingFile) {
Files.createFile(zipLocation);
}else {
return false;
}
} else if (zipLocation.toFile().exists() && !replacing) {
return false;
}
final FileSystem fs = FileSystems.newFileSystem(zipLocation, null);
.
.
.
Run Code Online (Sandbox Code Playgroud)
zipLocation
是一个路径
creatingFile
是一个布尔值
答案: 在我的特定情况下,由于路径中的空格,给出的答案不能正常工作,因此我必须按照我不想要的方式进行:
Files.createFile(zipLocation);
ZipOutputStream out = new ZipOutputStream(
new FileOutputStream(zipLocation.toFile()));
out.putNextEntry(new ZipEntry(""));
out.closeEntry();
out.close();
Run Code Online (Sandbox Code Playgroud)
这并不意味着给定的答案是错误的,它只是对我的具体情况不起作用
正如标题所说,我无法使用maven将命令行参数传递给java编译器,我使用maven-compiler-plugin来执行此操作,因此对此(特别是对于pluging的compilerArgs选项)我正在使用"最新方式"来表示传递给编译器的参数.足够的谈话,更多的代码,这是我的插件的maven配置,我不知道我做错了什么:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<fork>true</fork>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
我按照使用该工具的说明说明<fork>
必须设置为true,我不知道我错过了什么...请帮助一下吗?
可能或者可能没有帮助提到:我需要这里parameters
指定的参数因为我想在运行时使用反射获取我的方法中的参数的名称; 我在调用maven时使用-X参数来查看调试,我向我展示了它所做的"fork"调用,而且我无法查询我传递的参数(也许我需要启用插件;但我认为In这个案例是自动启用的,因为它不是任何个人资料的一部分,我不是专家,所以如果我错了请纠正我).
编辑:我已经尝试了几种方式,有甚至没有破折号我甚至尝试过"老方法"来做:
<compilerArguments>
<parameters />
</compilerArguments>
Run Code Online (Sandbox Code Playgroud)
和:
<compilerArgument>-parameters</compilerArgument>
Run Code Online (Sandbox Code Playgroud) 正如标题所说,我想知道用Java(并且只有java)编写的程序是否有可能以管理员权限重新启动自己(最好是.jar),以本机Windows UAC的方式显示(为了制作它对用户来说更可靠),我完成了我的作业,并发现使用c ++和java之间的桥梁可以实现这一点,但我真的很想将它作为一个纯java项目来实现.
PS:在远程情况下,这个结果是不可能的,有人可以用另一种语言向我展示"简单"的方法(我的意思是,我找到了教程,但是我认为它不应该复杂化那么复杂).
P.S2:如果可以实现这一点,它是否可以在其他平台上运行(OS X,Linux)
我正在为 a 的大小创建一组测试String
,因此我正在使用类似这样的东西myString.getBytes("UTF-8").length > MAX_SIZE
,其中 java 有一个已检查的异常UnsupportedEncodingException
。
只是出于好奇,并进一步考虑其他可能的测试场景,是否存在无法用 UTF-8 字符编码表示的文本?
顺便说一句:我做了功课,但没有任何地方(我能找到)指定 UTF-8/Unicode 确实包含所有可能的字符。我知道它的大小是 2^32 并且其中许多仍然是空的,但问题仍然存在。
我无法在 Blue Ocean 视图的 jenkins 管道上隐藏 sh 步骤的执行,我的Jenkinsfile
样子是这样的:
sh '#!/bin/sh -e\n' + "curl -s -u..."
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多种变体,但无法使其正常工作,即使之前已经成功过。:/任何可能出错的建议可能会受到赞赏
PS:我知道我可以/应该使用 Credentials 插件来隐藏我的密码,只是还没有这样做
最近我在Java中使用正则表达式,我发现自己陷入了一个(理论上)很容易解决的问题,但如果有更简单的方法可以解决这个问题(是的,是的,我很懒),问题是多次捕获一个组,这是:
public static void main(String[] args) {
Pattern p = Pattern.compile("A (IvI(.*?)IvI)*? A");
Matcher m = p.matcher("A IvI asd IvI IvI qwe IvI A"); //ANY NUMBER of IvI x IvI
//Matcher m = p.matcher("A A");
int loi = 0; //last Occurrence Index
String storage;
while (loi >= 0 && m.find(loi)) {
System.out.println(m.group(1));
if ((storage = m.group(2)) != null) {
System.out.println(storage);
}
//System.out.println(m.group(1));
loi = m.end(1);
}
m.find();
System.out.println("2 opt");
Pattern p2 = Pattern.compile("IvI(.*?)IvI");
Matcher m2 = p2.matcher(m.group(1)); //m.group(1) …
Run Code Online (Sandbox Code Playgroud) 我在使用 java nio 遍历 zip 文件的 VFS(虚拟文件系统)的文件树时遇到异常,这是我的代码:
public static void list(String zipFilePath) throws IOException{
FileSystem fs = FileSystems.newFileSystem(Paths.get(zipFilePath), null);
Path startPath = fs.getPath("/");
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("Dir : " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("\t->File : " + file);
return FileVisitResult.CONTINUE;
}
});
}
Run Code Online (Sandbox Code Playgroud)
异常表示文件不存在,但我已经解压缩了存档(zip),并且文件在那里......知道为什么吗?
这是例外:
java.nio.file.NoSuchFileException: /Dir1/Dir2/Dir3/Dir4/ExcelFile.xlsm
at com.sun.nio.zipfs.ZipPath.getAttributes(ZipPath.java:657)
at com.sun.nio.zipfs.ZipFileSystemProvider.readAttributes(ZipFileSystemProvider.java:285)
at java.nio.file.Files.readAttributes(Files.java:1669)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:105)
at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:199)
at …
Run Code Online (Sandbox Code Playgroud) JToolTip
当鼠标位于拥有它的组件或工具提示本身时,有没有办法保持可见?