FileSystemMap:与文件系统交互的自然方法
作为项目的一部分,我目前正在研究创建FileSystemMap
。 我已经开始了一个非常小的GitHub的项目在这里举办的代码。
本质上,此映射实现将允许用户与其文件系统上的目录进行交互,就好像它是java.util.Map
。 映射中的每个条目将是该目录中的文件,键将是文件名,值将是文件的内容。
此代码构建一个FileServiceMap并添加五个条目:
Map map = new FileSystemMap("/tmp/filetests");map.put("one", "one");map.put("two", "two");map.put("three", "three");map.put("four", "four");map.put("five", "five");
这将导致直接的结构如下:
/tmp/filetests/|----- five|----- four|----- one|----- three|----- two
添加和删除条目将更改目录中的文件。 更改条目的值将导致使用新值作为内容重写文件。 有关更多示例,请参见testMapMethods中的代码。
此外, FileSystemMap
已设计用于双向交互。 对其进行的任何程序性更新都将反映在文件系统上,并且对文件系统的任何更新将由地图拾取并作为事件触发。
此代码将更改注册到文件系统并打印出来:
Map map = new FileSystemMap("/tmp/filetests");
map.registerForEvents(System.out::println);
这是一些示例输出:
FPMEvent{eventType=NEW, programmatic=true, key='one', value='one'}
eventType是以下之一:
- 新–文件已创建
- 更新–文件已被修改
- 删除–文件已被删除
编程标志指示是否触发事件的是FileSystemMap
本身。 例如,如果调用了put()
,将创建一个文件,该文件又将引发一个事件。 为了避免反馈,了解它是否是触发事件的FileSystemMap
上的操作可能很有用。
密钥是已更改文件的名称。
该值是与已更改文件关联的最新值。 注意:这可能是也可能不是实际触发更改的值 。 例如,如果条目有两个非常快速的更改,则在第二次更新已经发生之后,第一个事件的值完全有可能会获得该值。 例如
map.put("one", "1");map.put("one", "2");
可能产生以下输出:
FPMEvent{eventType=NEW, programmatic=true, key='one', value='2'}
拾取了第一个事件(通过将“ one”设置为“ 1”触发),但是在程序检查文件内容时,文件已更改为“ 2”。 然后拾取第二个事件(通过将“ 1”设置为“ 2”来触发),但是由于该值未更改,因此将其抑制。
一些注意事项:
- 以“。”开头的文件。 被忽略。 原因是许多编辑器(包括vi)创建的临时文件不应由FileServiceMap拾取。
- 如果查看代码,您会注意到WatchService(自Java7开始)用于监视对文件系统的更改。 重要的是要了解WatchService是特定于操作系统的。 特别是在Mac OSX上,它不能很好地工作。 该主题讨论了一些问题。 WatchService的更新速度很慢,可以丢弃快速流动的事件。 在我的测试中,Ubuntu的性能明显优于MacOSX。 但是,如果您主要对手动执行的文件系统更改感兴趣,那么Mac OSX也可以。
- 映射仅支持字符串。
不用说,此类是为特定的实用程序而不是任何性能而设计的。
欢迎对该项目的所有贡献!
翻译自: https://www.javacodegeeks.com/2015/04/filesystemmap-a-natural-way-to-interact-with-your-file-system.html
FileSystemMap:与文件系统交互的自然方法相关推荐
- php 系统交互 删除文件_FileSystemMap:与文件系统交互的自然方法
php 系统交互 删除文件 作为项目的一部分,我目前正在研究创建FileSystemMap . 我已经开始了一个非常小的GitHub的项目在这里举办的代码. 本质上,此映射实现将允许用户与其文件系统上 ...
- 基础必备 | Python处理文件系统的10种方法
作者 | Jeff Hale 译者 | 风车云马:责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) [导读]在编写一些Python程序的时候,我们常常需要与 ...
- python os 遍历 子目录中所有文件_Python处理文件系统的10种方法 !
通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互.本文为相关研发人员和数据科学家提供了一个实现指南,并重点介绍10个基本的os和s ...
- 每日一课 | Python处理文件系统的10种方法
作者 | Jeff Hale 译者 | 风车云马 责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) 今日知识点 如何运用Python处理文件系统 前言 在编 ...
- python调用远程js_python和js交互调用的方法
后台代码都是利用的1.[get方式]使用jquery的get json与后台交互前端js代码片段var data= {'a': $('input[name="a"]').val() ...
- python中和js交互_python和js交互调用的方法
后台代码都是利用的 1.[get方式]使用jquery的get json与后台交互 前端js代码片段 var data= { 'a': $('input[name="a"]').v ...
- 转”使用UBOOT烧写根文件系统和内核的方法
"转"使用UBOOT烧写根文件系统和内核的方法 2012-08-13 20:39:28 分类: 原文地址:"转"使用UBOOT烧写根文件系统和内核的方法 作者: ...
- python交互编程模式_进入python交互模式的方法
进入python交互模式的方法 发布时间:2020-08-01 09:57:35 来源:亿速云 阅读:63 作者:清晨 这篇文章主要介绍进入python交互模式的方法,文中介绍的非常详细,具有一定的参 ...
- linux 目录防篡改,一种基于Linux虚拟文件系统的防篡改方法及系统的制作方法
一种基于Linux虚拟文件系统的防篡改方法及系统的制作方法 [技术领域] [0001]本发明涉及文件防护技术领域,特别涉及一种基于Linux虚拟文件系统的防篡改方法及系统. [背景技术] [0002] ...
最新文章
- GitLab CI流水线配置文件.gitlab-ci.yml详解(三)
- python和idl_有前辈对比过IDL和Python的速度吗,哪个会快点?
- 【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )
- cf1051F. The Shortest Statement(最短路)
- 【译】CREDITS: Peer-to-peer (P2P) network and its components
- Flex itemRenderer 内联渲染器
- 快速了解AngularJs HTTP响应拦截器
- 2-3实战分类模型之数据的读取与展示
- python查找指定字符所在行号_在python中获取当前位置所在的行号和函数名
- 内推熟人来自己公司一定要慎重
- matlab单层感知器画线,MATLAB神经网络学习(1):单层感知器
- 指示灯亮着,但是右边的数字小键盘不可用
- 猪懂傻改之《powershell 代码规范》
- python行业中性_Python抓取分析淘宝连衣裙数据,128元真的是低价人群分界线吗?...
- 简单的使用一下增强for循环
- 【C语言】动态申请空间
- 在linux下解压rar文件
- 北邮计算机学院国家示范,北京邮电大学获批2020年国家自然科学基金81项
- 《2021大数据产业年度创新服务产品》榜重磅发布丨金猿奖
- 51nod-1631-小鲨鱼在51nod小学
热门文章
- CSS动画示例(上一篇是CSS过渡…)
- Python变量名的定义规则与定义方式
- 基于持久化的wordcount程序 foreachRDD
- 龙芯linux内核,龙芯的linux kernel,内核开发与编译
- 键盘录入一个正整数,把它的各个位上的数字倒着排列形成一个新的整数并输出。 例如:12345 数出54321 78760 输出6787(0省去)
- redis集群搭建报错-(error) CLUSTERDOWN The cluster is down
- 基础笔试编程题(jz)
- 关于Object.clone克隆方法的测试
- tf.metrics._将指标标签与MicroProfile Metrics 2.0一起使用
- maven依赖范围_Maven依赖范围