HuTool 工具类详细介绍2 文件操作工具类
IO流相关
文件的拷贝
// 文件的拷贝BufferedInputStream in = FileUtil.getInputStream("d:/桌面/HuTool学习.md");BufferedOutputStream out = FileUtil.getOutputStream("d:/桌面/HuTool学习复制.md");long copySize = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE);// 拷贝文件的大小System.out.println(copySize);System.out.println("拷贝成功");in.close();out.close();
文件类型判断
File file = FileUtil.file("d:/桌面/HuTool学习.md");String type = FileTypeUtil.getType(file);//输出的是文件的格式Console.log(type);
文件监听
在以前,我们需要监听文件的变化:创建修改删除等,需要进行遍历来定时检查文件,效率很低,性能很差,所以有了这个工具类。
监听指定事件
File file2 = FileUtil.file("example.properties");//这里只监听文件或目录的修改事件WatchMonitor watchMonitor = WatchMonitor.create(file2, WatchMonitor.ENTRY_MODIFY);watchMonitor.setWatcher(new Watcher(){@Overridepublic void onCreate(WatchEvent<?> event, Path currentPath) {Object obj = event.context();Console.log("创建:{}-> {}", currentPath, obj);}@Overridepublic void onModify(WatchEvent<?> event, Path currentPath) {Object obj = event.context();Console.log("修改:{}-> {}", currentPath, obj);}@Overridepublic void onDelete(WatchEvent<?> event, Path currentPath) {Object obj = event.context();Console.log("删除:{}-> {}", currentPath, obj);}@Overridepublic void onOverflow(WatchEvent<?> event, Path currentPath) {Object obj = event.context();Console.log("Overflow:{}-> {}", currentPath, obj);}});//设置监听目录的最大深入,目录层级大于制定层级的变更将不被监听,默认只监听当前层级目录watchMonitor.setMaxDepth(3);//启动监听watchMonitor.start();
WatchMonitor.createAll(file, new SimpleWatcher(){@Overridepublic void onModify(WatchEvent<?> event, Path currentPath) {Console.log("EVENT modify");}}).start();
文件的读取
//默认UTF-8编码,可以在构造中传入第二个参数做为编码FileReader fileReader = new FileReader("d:/桌面/HuTool测试.txt");String result = fileReader.readString();System.out.println(result);
文件的写入
FileWriter writer = new FileWriter("d:/桌面/HuTool测 试.txt");writer.write("添加文本",true);
文件追加
主要用于类似日志这种(此类只有在写入文件的时候打开文件,写入结束之后,此类不需要关闭)
File file = new File("d:/桌面/HuTool测试.txt");FileAppender appender = new FileAppender(file, 16, true);appender.append("lolly1023");appender.append("追加");appender.append("成功");appender.flush();appender.toString();
文件跟随
有时候需要启动线程来“监控”文件的变化,类似于Linux下的tail -f
命令
Tailer tailer = new Tailer(FileUtil.file("d:/桌面/test.log"), Tailer.CONSOLE_HANDLER, 2);tailer.start();
/*** 命令行打印的行处理器* * @author looly* @since 4.5.2*/
public static class ConsoleLineHandler implements LineHandler {@Overridepublic void handle(String line) {Console.log(line);}
}
该方法会阻塞线程
文件名与扩展名
File file = FileUtil.file("d:/桌面/HuTool学习.md");// HuTool学习.mdString name = FileNameUtil.getName(file);System.out.println(name);
File file1 = FileUtil.file("d:/桌面/HuTool学习.md");// "HuTool学习"String name1 = FileNameUtil.mainName(file1);System.out.println(name1);// "md"String name2 = FileNameUtil.extName(file1);System.out.println(name2);
HuTool 工具类详细介绍2 文件操作工具类相关推荐
- Code片段 : .properties属性文件操作工具类 JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "贵专" - 泥瓦匠 一.java.util.Properties API ...
- HuTool工具的使用介绍和常用案例
HuTool工具的使用介绍和常用案例 一. 是什么 一个小而全的java工具类,静态方法封装.由开源项目作者的项目中一个util包衍变而来,里面包含了各种平时我们会用到的工具类. 官方文档 二 ...
- 文件操作工具类FileUtil
分享一个文件处理的工具类,依赖如下: <dependency><groupId>org.apache.ant</groupId><artifactId> ...
- JAVA——文件操作工具类封装的简单实现
问题描述 关于文件操作的简单工具类,包括文件夹创建,文件夹删除,文件创建,文件重命名,文件复制,文件删除.如果需要文件夹复制,其实就是创建文件夹和复制文件的操作. 解决方案 上下文 package c ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper
文件操作是非常通用的,注释都写在源代码中了,不多说~ 需要特别说明的是,任务的异步执行和IOperationProgressListener. 拷贝和删除等操作,是比较费时的,采用了异步执行的方式~ ...
- geotools读取shp文件及shp文件操作工具类代码
geotools读取shp文件及shp文件操作工具类代码.pdf 完整文档下载地址 https://download.csdn.net/download/a772304419/17468931 imp ...
- 详细介绍XTF文件数据格式
详细介绍XTF文件数据格式 (按照数据结构顺序列出)(普遍适用) XTFFILEHEADER Structure 这个是整个文件的header,里面存储了文件名,SonarName,SonarType ...
- Java必备基础十六——输入与输出流相关类详细介绍
坚持的第16篇. 鸡汤一下:真正能让你走远的,都是自律.积极和勤奋 文章目录 序言 一.什么是流 二.流的种类划分 1.按数据流的方向分:输入流.输出流 1.1 定义 1.2 层次结构 2.按处理数据 ...
- java输出set集合元素_java Set集合,HashSet类详细介绍
下面要给大家介绍的就是java Set集合方面的内容,本文主要讲到了HashSet类的一些知识,主要包括了HashSet类的特点,HashSet 类的常用构造方法重载形式以及代码演示了创建两种不同形式 ...
最新文章
- 记一次validator jar冲突导致的启动异常
- zigbee之SampleApp_ProcessEvent()
- C#编写运行在Linux环境下的采用Mediainfo来获取多媒体文件信息的代码
- BugkuCTF-PWN题pwn2-overflow超详细讲解
- 30 个惊艳的Python开源项目
- sencha touch 类的使用
- Flex 4 的ComboBox下拉框滚动条Scroller(VerticalScrollBar)的thumb过小问题的解决
- 深入剖析 Sharepoint 企业项目管理与 SharePoint(转)
- Vibe算法原理与实践(C++)
- Java编译器:Javac
- ReportMachine脚本控制背景色
- 根据生日自动计算年龄
- java 公共方法是什么意思_在java中公共/私有/其他方法的含义是什么意...
- PRCS-1016 : Failed to resolve Single Client Access Name
- C++ Primer Plus习题及答案-第五章
- 如何从0搭建公司后端技术栈?
- macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像
- javascript 汉字生成拼音
- 解决文件流导出为excel无法打开的问题
- 管道,Linux命令,Windows命令,cmd命令,tmux,vim,shell,bash,sh文件,bat文件
热门文章
- Frida用法详解【附用例】
- discuz x3.1 整站搬家换域名攻略
- Dell G3更换机械硬盘
- 为什么学完这个他们都跳槽/涨薪了?
- Citrix 桌面虚拟化解决方案与VMware桌面虚拟化解决方案对比
- [转]轻松获得网通、电信、铁通IP地址分配段
- 自动驾驶小实验之Turtlebot3_Autopilot(Tensorflow, OpenCV, ROS, PID)
- 方方格子access_有什么好用的办公软件推荐?
- 创客学院 level1第二节学习完成
- 简单理解hibernate懒加载