问题标签 [jsr203]
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 - 使用 JIMFS 创建虚拟文件系统
我想使用 Google 的 JIMFS 来创建一个用于测试目的的虚拟文件系统。不过,我很难开始。
我看了这个教程:http ://www.hascode.com/2015/03/creating-in-memory-file-systems-with-googles-jimfs/
但是,当我创建文件系统时,它实际上是在现有文件系统中创建的,即我不能这样做:
因为我被拒绝访问。
我错过了什么吗?
目前,我的代码如下所示:
测试类:
某处的Java类:
但是,我创建了一个单独的类来测试 JIMFS,这里目录的创建没有失败,但是我不能像这样创建一个新文件:
我究竟做错了什么?
java - 如何为 zip 存档编写 FileTypeDetector?
对于这个包,我接下来的一个步骤是编写一系列FileTypeDetector
让该方法Files.probeContentType()
比默认情况下更智能(默认提供的文件类型检测器仅依赖于“文件扩展名”)。
正如上述方法的 javadoc 所提到的,该方法依赖于在文件FileTypeDetector
中声明的 s实例。META-INF/services
我首先使用一个简单的提供程序进行了测试,以使用文件头检测 PNG 文件:
有用。现在,在快速浏览 API 之后,我认为这是检测文件是否为 zip 文件的好方法:
的内容META-INF/services/java.nio.file.spi.FileTypeDetector
是这样的:
通过当前的测试,它起作用了;对于 zip,我创建了一个空的 zip 文件,对于 PNG 测试,我使用了这个图像。
全面测试:
然而...
如果我反转服务文件中的实现列表,那么现在的文件是:
然后 PNG 文件被检测为 zip 文件!
经过一些调试后,我注意到:
- 打开PNG
ZipInputStream
并没有失败...... - ...并
.getNextEntry()
返回null!
我预计至少 .getNextEntry()
会抛出ZipException
.
为什么没有呢?如何可靠地检测文件是否为 zip?
进一步说明:这是针对Path
s; 因此任何东西File
都是不可用的。
java - 使用 FileSystemProvider 实现 FTP 文件系统
我开发了一个应用程序,它使用 Java 检测文件系统中的变化java.nio.file.WatchService
这在为默认文件系统设置 WatchService 时非常有用:
watchService = FileSystems.getDefault().newWatchService();
我现在的用例是扩展这个应用程序来监控远程 ftp 服务器上的事件。具体来说,当检测到新文件 (ENTRY_CREATE) 事件时,获取文件然后处理它。
研究这个我相信这是方法:
- 根据NIO.2 文档实现自定义 FTP FileSystemProvider
- 为自定义 FTP FileSystemProvider 实现 WatchService 实现
总的来说,这种方法看起来对吗?
其次,任何指向教程或实现的链接都会非常有帮助。
谢谢!
java - 表示在 Windows 下以 `\` 开头但没有磁盘驱动器的 `Path`
我没有 Windows 副本,但想知道在 Java 中表示路径的行为和推荐用法,例如\autoexec.bat
在 Windows 下?
从语义上讲,这样的路径将代表autoexec.bat
任何文件系统根目录上的文件。C:\
因此,在表示文件之前,需要根据表示磁盘驱动器的路径(例如 )来解析它。从这个意义上说,它不是绝对的。但是,我想它也没有根组件。
在 Windows 上运行 JVM 时可以创建这样的路径吗?如果是这样,会getRoot()
返回isAbsolute()
什么?
我使用Memory File System尝试了以下代码,但这会抛出InvalidPathException
:“path must not start with separator at index 1: \truc”。这是否忠实地反映了 Windows 下的行为,还是这个特定库的怪癖?
这样的路径在 Windows 终端中是有效的,或者至少是我上次使用 Windows 时(很久以前)。创建这样的路径以标记路径是“绝对的”会很方便(从反斜杠开始的意义上说,因此与文件夹无关),但仍然保留没有指定驱动程序字母的路径。然后可以(稍后)将这样的路径解析为C:\autoexec.bat
or D:\autoexec.bat
or ...</p>
java - 对于 Git 文件系统层来说,具有根每次提交的单个 JSR203 存储是否是合理的设计?
我想实现一个 jsr203 文件系统来访问 git 历史记录。因此,创建一个表示特定提交中的文件的路径,通过让文件系统访问.git
封面下的文件夹并读取历史记录来检索其内容,等等。
我考虑过使用该jgit
库来读取文件,并使用Path
(主要)委托给默认文件系统实现的Path
实现。一个重要的区别是Path
将包含用户感兴趣的提交标识符。
我将只有一个文件存储,但有多个根:每个提交一个。
这种设计有意义吗?是否有我可能遇到的隐藏困难?在开始之前还有更多的计划吗?