Hutool之文件工具——FileUtil

简介

我想在Java工具中,文件操作应该也是使用相当频繁的,但是Java对文件的操作由于牵涉到流,所以较为繁琐,各种Stream也是眼花缭乱,因此大部分项目里的util包中我想都有一个FileUtil的类,而本类就是对众多FileUtil的总结。

Linux命令对应方法

这些方法都是按照Linux命令来命名的,方便熟悉Linux的用户见名知意,例如:

  1. ls 返回给定目录的所有文件对象列表,路径可以是相对ClassPath路径或者绝对路径,不可以是压缩包里的路径。
  2. listFileNames 则是返回指定目录下的所有文件名,支持jar等压缩包。
  3. touch 创建文件,如果给定路径父目录不存在,也一同创建。
  4. del 删除文件或者目录,目录下有嵌套目录或者文件会一起删除。
  5. mkdir 创建目录,父目录不存在自动创建。
  6. createTempFile 创建临时文件,在程序运行完毕的时候,这个文件会被删除。
  7. copy 复制文件或目录,目标文件对象可以是目录,自动用原文件名,可以选择是否覆盖目标文件。
  8. move 移动文件或目录,原理是先复制,再删除原文件或目录
  9. isExist 文件或者目录是否存在。

常用方法

getAbsolutePath

获得绝对路径,如果给定路劲已经是绝对路径,返回原路径,否则根据ClassPath或者给定类的相对位置获得其绝对位置

close

对于实现了Closeable接口的对象,可以直接调用此方法关闭,且是静默关闭,关闭出错将不会有任何调试信息。这个方法也是使用非常频繁的,例如文件流的关闭等等。

equals

比较两个文件是否相同

文件读写

写文件

  1. getBufferedWriter 获得带缓存的写入对象,可以写字符串等。
  2. getPrintWritergetBufferedWriter的包装,可以有println等方法按照行写出。
  3. getOutputStream 会的文件的写出流想对象。
  4. writeString直接写字符串到文件,会覆盖之前的内容。
  5. appendString 追加字符串到文本。
  6. writeLines appendLines 覆盖写入和追加文本列表,每个元素都是一行。
  7. writeBytes 写字节码。
  8. writeStream 写流中的内容到文件里。

读文件

  1. getReader 获得带缓存的Reader对象。
  2. readLines 按行读取文件中的数据,返回List,每一个元素都是一行文本。
  3. load 按照给定的ReaderHandler对象读取文件中的数据,ReaderHandler是一个借口,实现后就可以操作Reader对象了,这个方法存在是为了避免用户手动调用close方法。
  4. readString 直接读出文件中的所有文本。
  5. readBytes 读字节码

其他

  1. isModifed 文件是否被修改过,需要传入一个时间戳,用来比对最后修改时间。
  2. getExtension 获得文件的扩展名。

转载于:https://my.oschina.net/looly/blog/288525

  • 3
    点赞
  • 0
    评论
  • 2
    收藏
  • 扫一扫,分享海报

package com.hexiang.utils; import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from local file. FIXME How to judge UTF-8 and GBK, the * correct code should be: FileReader fr = new FileReader(new * InputStreamReader(fileName, "ENCODING")); Might let the user select the * encoding would be a better idea. While reading UTF-8 files, the content * is bad when saved out. * * @param fileName - * local file name to read * @return * @throws Exception */ public static String readFileAsString(String fileName) throws Exception { String content = new String(readFileBinary(fileName)); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(String fileName, String encoding) throws Exception { String content = new String(readFileBinary(fileName), encoding); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(InputStream in) throws Exception { String content = new String(readFileBinary(in)); return content; } /** * Read content from local file to binary byte array. * * @param fileName - * local file name to read * @return * @throws Exception */ public static byte[] readFileBinary(String fileName) throws Exception { FileInputStream fin = new FileInputStream(fileName); return readFileBinary(fin); } /** * 从输入流读取数据为二进制字节数组. * @param streamIn * @return * @throws IOException */ public static byte[] readFileBinary(InputStream streamIn) throws IOException { BufferedInputStream in = new BufferedInputStream(streamIn); ByteArrayOutputStream out = new ByteArrayOutputStream(10240); int len; while ((len
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值