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(){
		    @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);

你可能感兴趣的:(工具类)