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 文件操作工具类相关推荐

  1. Code片段 : .properties属性文件操作工具类 JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "贵专" - 泥瓦匠 一.java.util.Properties API ...

  2. HuTool工具的使用介绍和常用案例

    HuTool工具的使用介绍和常用案例 一. 是什么 ​ 一个小而全的java工具类,静态方法封装.由开源项目作者的项目中一个util包衍变而来,里面包含了各种平时我们会用到的工具类. ​ 官方文档 二 ...

  3. 文件操作工具类FileUtil

    分享一个文件处理的工具类,依赖如下: <dependency><groupId>org.apache.ant</groupId><artifactId> ...

  4. JAVA——文件操作工具类封装的简单实现

    问题描述 关于文件操作的简单工具类,包括文件夹创建,文件夹删除,文件创建,文件重命名,文件复制,文件删除.如果需要文件夹复制,其实就是创建文件夹和复制文件的操作. 解决方案 上下文 package c ...

  5. 小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper

    文件操作是非常通用的,注释都写在源代码中了,不多说~ 需要特别说明的是,任务的异步执行和IOperationProgressListener. 拷贝和删除等操作,是比较费时的,采用了异步执行的方式~ ...

  6. geotools读取shp文件及shp文件操作工具类代码

    geotools读取shp文件及shp文件操作工具类代码.pdf 完整文档下载地址 https://download.csdn.net/download/a772304419/17468931 imp ...

  7. 详细介绍XTF文件数据格式

    详细介绍XTF文件数据格式 (按照数据结构顺序列出)(普遍适用) XTFFILEHEADER Structure 这个是整个文件的header,里面存储了文件名,SonarName,SonarType ...

  8. Java必备基础十六——输入与输出流相关类详细介绍

    坚持的第16篇. 鸡汤一下:真正能让你走远的,都是自律.积极和勤奋 文章目录 序言 一.什么是流 二.流的种类划分 1.按数据流的方向分:输入流.输出流 1.1 定义 1.2 层次结构 2.按处理数据 ...

  9. java输出set集合元素_java Set集合,HashSet类详细介绍

    下面要给大家介绍的就是java Set集合方面的内容,本文主要讲到了HashSet类的一些知识,主要包括了HashSet类的特点,HashSet 类的常用构造方法重载形式以及代码演示了创建两种不同形式 ...

最新文章

  1. 记一次validator jar冲突导致的启动异常
  2. zigbee之SampleApp_ProcessEvent()
  3. C#编写运行在Linux环境下的采用Mediainfo来获取多媒体文件信息的代码
  4. BugkuCTF-PWN题pwn2-overflow超详细讲解
  5. 30 个惊艳的Python开源项目
  6. sencha touch 类的使用
  7. Flex 4 的ComboBox下拉框滚动条Scroller(VerticalScrollBar)的thumb过小问题的解决
  8. 深入剖析 Sharepoint 企业项目管理与 SharePoint(转)
  9. Vibe算法原理与实践(C++)
  10. Java编译器:Javac
  11. ReportMachine脚本控制背景色
  12. 根据生日自动计算年龄
  13. java 公共方法是什么意思_在java中公共/私有/其他方法的含义是什么意...
  14. PRCS-1016 : Failed to resolve Single Client Access Name
  15. C++ Primer Plus习题及答案-第五章
  16. 如何从0搭建公司后端技术栈?
  17. macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像
  18. javascript 汉字生成拼音
  19. 解决文件流导出为excel无法打开的问题
  20. 管道,Linux命令,Windows命令,cmd命令,tmux,vim,shell,bash,sh文件,bat文件

热门文章

  1. Frida用法详解【附用例】
  2. discuz x3.1 整站搬家换域名攻略
  3. Dell G3更换机械硬盘
  4. 为什么学完这个他们都跳槽/涨薪了?
  5. Citrix 桌面虚拟化解决方案与VMware桌面虚拟化解决方案对比
  6. [转]轻松获得网通、电信、铁通IP地址分配段
  7. 自动驾驶小实验之Turtlebot3_Autopilot(Tensorflow, OpenCV, ROS, PID)
  8. 方方格子access_有什么好用的办公软件推荐?
  9. 创客学院 level1第二节学习完成
  10. 简单理解hibernate懒加载