gpt4 book ai didi

java - 调整 Java 7 中默认文件系统的行为

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:13 27 4
gpt4 key购买 nike

Java 7 引入了一个用于编写自定义文件系统的出色 API。考虑一个我不想实现新文件系统的用例,我只想调整现有文件系统的行为。例如,翻转写入/读取的每一位。

在我看来,当前的 jdk 并没有为此提供适当的设施。 AbstractFileSystemProvider,WindowsFileSystemProvider 扩展的提供者是包私有(private)的,所以我不能重用它。我什至没有找到 Linux 的具体实现。

问题 #1:没有对当前文件系统进行有用的扩展抽象。

假设我只针对 Windows 进行扩展。 WindowsFileSystemProvider 是公共(public)的,所以我实际上可以轻松地覆盖 newByteChannel 并完成它。但是,唉!

问题 #2:WindowsFileSystem 是公开的,所以实际上我不得不编写一个全新的文件系统来引入一个新的 Provider。

我是不是遗漏了什么,或者这个功能是完全原始的,还没有准备好供应用程序编写者使用吗?

最佳答案

接触openjdk中的core-libs-dev后得到如下答复:

The service provider interface allows you to replace the default provider or interpose on it (see the FileSystems.getDefault docs for the details on how this is configured). When you interpose on the default provider then you have the opportunity to do your customization although it can be tricky to ensure that you get all the delegation right. As a starting point then look at the PassThroughFileSystem in jdk/test tree, this is a provider used by some of the tests and may be what you are looking for.

PassThroughFileSystem 是一个很好的引用实现,它演示了如何通过对默认提供程序的适当委托(delegate)来实现自定义提供程序。话虽如此,在我看来问题仍然存在,但至少我们有一个更好的起点。

关于java - 调整 Java 7 中默认文件系统的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com