HuTool 工具类详细介绍2 文件操作工具类

工具类 专栏收录该内容
12 篇文章 1 订阅

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(){
		    @Override
		    public void onCreate(WatchEvent<?> event, Path currentPath) {
		        Object obj = event.context();
		        Console.log("创建:{}-> {}", currentPath, obj);
		    }

		    @Override
		    public void onModify(WatchEvent<?> event, Path currentPath) {
		        Object obj = event.context();
		        Console.log("修改:{}-> {}", currentPath, obj);
		    }

		    @Override
		    public void onDelete(WatchEvent<?> event, Path currentPath) {
		        Object obj = event.context();
		        Console.log("删除:{}-> {}", currentPath, obj);
		    }

		    @Override
		    public 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(){
		    @Override
		    public 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 {
    @Override
    public void handle(String line) {
        Console.log(line);
    }
}

该方法会阻塞线程

文件名与扩展名

获取文件名

		File file = FileUtil.file("d:/桌面/HuTool学习.md");

		// HuTool学习.md
		String 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);
  • 2
    点赞
  • 1
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 1 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

liuerchong

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值