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

2024-01-03

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

在我看来,当前的jdk并没有为此提供适当的设施。 AbstractFileSystemProvider,WindowsFileSystemProvider 扩展的提供程序是包私有的,因此我无法重用它。我什至没有找到Linux的具体实现。

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

假设我仅针对 Windows 进行扩展。 WindowsFileSystemProvider 是公共的,因此我实际上可以轻松地覆盖 newByteChannel 并使用它来完成。可惜!

问题#2:WindowsFileSystem 是notpublic,所以我实际上必须编写一个全新的文件系统只是为了引入一个新的提供程序。

我是否遗漏了一些东西,或者这个功能完全是原始的,还没有准备好供应用程序编写者使用?


联系openjdk中的core-libs-dev后,得到以下答案:

服务提供程序接口允许您替换默认提供程序或对其进行干预(有关如何配置的详细信息,请参阅 FileSystems.getDefault 文档)。当您介入默认提供程序时,您就有机会进行自定义,尽管确保所有委派正确可能很棘手。作为起点,然后查看 jdk/test 树中的 PassThroughFileSystem,这是某些测试使用的提供程序,可能就是您正在寻找的。

PassThroughFileSystem 是一个很好的参考实现,它演示了如何通过正确委托给默认提供程序来实现自定义提供程序。话虽如此,我认为问题仍然存在,但至少我们有一个更好的起点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调整 Java 7 中默认文件系统的行为 的相关文章

  • 不支持的字段:将瞬间格式化为日期 ISO 时的年份[重复]

    这个问题在这里已经有答案了 我正在尝试将 Instant 格式化为 ldap 日期 ISO8601 但在 f format Instant now 处失败 String input 20161012235959 0Z DateTimeFor
  • 简单 XML 框架:ElementMap 中的对象具有“类似内联”的行为

    我正在尝试在 Android 上序列化自定义对象的 Hashmap 以获得如下 xml
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • 使用全局变量从内部函数获取空字符串

    请帮助我解决一些小问题 我确信你能做到 D 我试图在 firestore 文档 user cases information 上设置一个字段 其中包含一个字段 case number 首先我声明这个全局变量 private String c
  • 未注入带有 JPA2 的 Apache Ignite 2.7 IgniteRepository

    使用在 Web 上建立的 guildes 我使用 Spring Data JPA 2 应用程序制作了简单的 Spring Boot 2 仅在 2 7 版本中才向 Apache Ignite 添加了 Spring Boot JPA 2 支持
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

    我有一个应用程序可以观察外部存储上的公共目录FileObserver 它运行良好Lollipop设备 我想添加对Marshmallow 所以我用它设置了一台 Nexus 9 平板电脑 在 Marshmallow 设备上 它失败 在 Loll
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • 了解Kafka流groupBy和window

    我无法理解 kafka 流中的 groupBy groupById 和窗口的概念 我的目标是聚合一段时间内 例如 5 秒 的流数据 我的流数据看起来像 value 0 time 1533875665509 value 10 time 153
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆
  • 获取 Future 对象的进度的能力

    参考 java util concurrent 包和 Future 接口 我注意到 除非我弄错了 只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度 这就引出了以下问题 有没有办法在非 GUI 非 Swing 应用程序 映
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF

随机推荐

  • 无法在 asp.net core 中使用 MSAL 1.1.0-preview 通过授权代码获取 AccessToken

    我按照以下官方步骤尝试了该场景 Web 应用程序在 Azure Ad B2C 中调用 Web API https learn microsoft com en us azure active directory b2c active dir
  • 获取多个嵌入的 Youtube 视频以按顺序自动播放

    有没有什么简单的方法可以在一个页面上嵌入多个 YouTube 视频 并在页面打开时立即开始播放 并且在第一个视频播放完毕后开始播放第二个视频 我希望这样的事情会起作用
  • 检测滚动结束/结束

    我想检测用户何时停止滚动页面 元素 这可能很棘手 因为最近对 OSX 滚动行为的增强会产生这种新的惯性效应 是否有事件被触发 我能想到的唯一其他解决方案是使用间隔在页面 元素的滚动位置不再更改时进行拾取 例如 var element el
  • 尝试制作一个名为“List”的 CodeIgniter 控制器

    我在controllers list php中有以下代码 但是 尝试访问它会出现以下 PHP 错误 解析错误 语法错误 意外的 T LIST 期望 T STRING var www sitename htdocs system applic
  • Jenkins蓝海更改github访问令牌

    Jenkins蓝海非常酷的持续集成工具 但我遇到了以下问题 在主页上 按照要求 我插入了我的GitHub access token 之后我意识到那是不正确来自另一家公司的令牌 现在我想更改为另一个令牌 但没有选项可以做到这一点 我总是看到以
  • 如何使用MonoTouch为iPhone应用程序使用多语言?

    如何在 iPhone 应用程序中使用多语言 目前我只使用英语 但将来我想使用大约 20 到 30 种语言 如何在iPhone开发中使用MonoTouch使用它 您必须以 language lproj 格式为您使用的每种语言创建一个文件夹 例
  • 用 Python 编写的反向 shell 脚本在 Rust 中的等价物是什么?

    Python 中的反向 shell 脚本通常如下所示 import socket subprocess os s socket socket socket AF INET socket SOCK STREAM s connect 192 1
  • 在同一个包中导入类

    我浏览了一些主题 但没有找到合适的答案 我正在尝试将课程导入其他课程 但我得到了 无法解析导入 classname 错误 这两个类都在同一个包中 什么可能导致问题 我还尝试清理我的项目 如果这两个类位于同一个包中 则不必导入它
  • 如何在 R 中查找 Unicode 字符串中的“真实”字符数

    我知道如何在 R 中找到非 Unicode 字符串的长度 nchar ABC 感谢所有在这里回答问题的人 如何在R中找到字符串的长度 https stackoverflow com questions 11134812 how to fin
  • Objective C - 使用委托传回字符串值

    我想使用委托将 UITextField nameText 从 GreenViewController 传递到 ViewController 中的 UILabel nameValue 我做了委托 调用了ViewController中的onSa
  • Python:时间拉伸波形文件 - 三种方法之间的比较

    我正在对语音数据集进行一些数据增强 并且我想在时域中拉伸 压缩每个音频文件 我找到了以下三种方法来做到这一点 但我不确定哪一种是最好的或更优化的方法 dimension int len signal speed res librosa ef
  • Python numpy 按字符串列的值拆分 csv 文件

    我有 5000 行数据 在 csv 文件中如下所示 我想使用 numpy 数组按最后一列 6 即 A B 进行分组 因为之后我将在每组中绘制数据 Title Date Time Value1 Value2 Value3 Value4 Val
  • 如何在Fragment中添加滚动

    我已经实施了Twitter SDK在列表片段中 就像 Twitter 一样 它具有无限滚动功能 但是当我尝试添加这个片段时scrollview layout它禁用scrollview of twitter fragment public c
  • VB.NET:如何防止用户在组合框中输入

    如何防止用户在组合框中输入内容 以便用户只能选择定义列表中的一项 Set the DropDownStyle组合框的属性为DropDownList 这将只允许选择列表中的项目 并且不允许任何自由格式的用户输入
  • Ipython Notebook:Mac 中的 jupyter_notebook_config.py 在哪里?

    我刚刚开始使用 Mac 所以如果这听起来太天真 请原谅我 我正在尝试安装Interactive Parallel From https github com ipython ipyparallel https github com ipyt
  • VueJS 中只有在调度和提交完成后才触发路由

    我确实有一个表单提交 它需要电子邮件和密码 然后将它们传递到商店中名为的操作中userSignIn 登录 vue onSubmit if this refs form validate const user email this email
  • oink 日志命令在 Heroku 上不起作用

    我最近开始使用oink gem https github com noahd1 oink在我的 Heroku 应用程序上 因为我注意到一些控制器操作出现了小内存泄漏 oink log 命令在本地工作正常 但我无法弄清楚让它在我的生产站点上工
  • 如何将图像添加到 DataGridView 中的单个特定单元格?

    使用 C 和 Visual Studio 我有一个DataGridView有 2 列 对于每一行 第一列将显示文本 对于除特定行之外的每一行 第二列将显示文本 在第二列的一个特定单元格中 我需要显示一张图像 例如 Row 0 Cell 0
  • GoogleSheets google.script.run 总是去 FailureHandler

    我正在使用 GoogleSheets HTMLService 我正在从我的 Html 页面的脚本中调用 google script run 但它总是会去 FailureHandler 这其中有什么问题吗 请参阅下面的代码 当我运行它时 它总
  • 调整 Java 7 中默认文件系统的行为

    Java 7 引入了一个用于编写自定义文件系统的出色 API 考虑一个用例 我不想实现新的文件系统 我只想调整现有文件系统的行为 例如 翻转从中写入 读取的每一位 在我看来 当前的jdk并没有为此提供适当的设施 AbstractFileSy