此问题适用于 Linux/Mac;如果将文件解压缩到 Windows 盒子上,我什至认为这些文件不会带有斜杠。
您好,我需要打开流行的 BRO IDS 系统输出的日志文件。这些文件是只读的,我需要在不更改文件名的情况下处理它们的内容。
出于某种原因,Bro 文件名采用以下格式:“conn.19/00/00-22/00/00.log”。(也是 .gz 版本,带有斜杠)我尝试在我的 Mac 上使用默认设置运行最新的 Bro 实例,它生成的日志文件具有相同的正斜杠模式,所以这是其他人做出的有意识的决定,我会必须解决。
在将文件作为 Java 单元测试加载时,通过
File("conn.19/00/00-22/00/00.log")
或通过网址
getClass().getClassLoader().getResource("conn.19/00/00-22/00/00.log")
我得到了正斜杠被解释为不存在目录的预期问题。
**我发现了一堆关于文件名中的斜线的其他被否决的问题,主要是由想要制造此类问题的人提出的。我正在寻找一种在 Java 中处理这些错误文件名的解决方案。
如果我可以将文件数据输入到 InputStream,我会很高兴。
更新 1:这作为更新比作为评论更有效,因为它改变了问题的性质。
我发现在 MacOS 和可能的 Linux 中,Finder GUI 应用程序显示带有正斜杠的文件名,如下所示:
但是在终端中我看到了这个:
最后,File.list() 命令也这样解释它:
所以解决方案是在读取文件时使用冒号':'字符。原来这是一个兔子洞,可能涉及将':'编码为“%3a”或双重编码为“%253a”。在我的排列中,这些都没有起作用。