public class FileUtil extends Object
| 构造器和说明 |
|---|
FileUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static <T> File |
appendLines(Collection<T> list,
File file,
Charset charset)
将列表写入文件,追加模式,策略为:
当文件为空,从开头追加,尾部不加空行
当有内容,换行追加,尾部不加空行
当有内容,并末尾有空行,依旧换行追加
|
static BufferedInputStream |
getInputStream(File file)
获得输入流
|
static File |
getParent(File file,
int level)
获取指定层级的父路径
getParent(file("d:/aaa/bbb/cc/ddd", 0)) -》 "d:/aaa/bbb/cc/ddd"
getParent(file("d:/aaa/bbb/cc/ddd", 2)) -》 "d:/aaa/bbb"
getParent(file("d:/aaa/bbb/cc/ddd", 4)) -》 "d:/"
getParent(file("d:/aaa/bbb/cc/ddd", 5)) -》 null
|
static BufferedReader |
getReader(File file,
Charset charset)
获得一个文件读取器
|
static BufferedReader |
getReader(InputStream in,
Charset charset)
获得一个Reader
|
static boolean |
isEmpty(File file)
文件是否为空
目录:里面没有文件时为空 文件:文件大小为0时为空 |
static <T> boolean |
isEmpty(T[] array) |
static boolean |
isNotEmpty(File file)
目录是否为空
|
static File |
mkdir(File dir)
创建文件夹,会递归自动创建其不存在的父文件夹,如果存在直接返回此文件夹
此方法不对File对象类型做判断,如果File不存在,无法判断其类型 |
static boolean |
mkdirsSafely(File dir,
int tryCount,
long sleepMillis)
安全地级联创建目录 (确保并发环境下能创建成功)
并发环境下,假设 test 目录不存在,如果线程A mkdirs "test/A" 目录,线程B mkdirs "test/B"目录,
其中一个线程可能会失败,进而导致以下代码抛出 FileNotFoundException 异常
file.getParentFile().mkdirs(); // 父目录正在被另一个线程创建中,返回 false
file.createNewFile(); // 抛出 IO 异常,因为该线程无法感知到父目录已被创建
|
static File |
mkParentDirs(File file)
创建所给文件或目录的父目录
|
static List<String> |
readLines(File file,
Charset charset)
从文件中读取每一行数据
|
static <T extends Collection<String>> |
readLines(File file,
Charset charset,
T collection)
从文件中读取每一行数据
|
static boolean |
sleep(long millis)
挂起当前线程
|
static BufferedInputStream |
toBuffered(InputStream in)
转换为{BufferedInputStream}
|
static FileInputStream |
toStream(File file)
文件转为{ FileInputStream}
|
static File |
touch(File file)
创建文件及其父目录,如果这个文件存在,直接返回这个文件
此方法不对File对象类型做判断,如果File不存在,无法判断其类型 |
static <T> File |
writeLines(Collection<T> list,
File file,
Charset charset)
将列表写入文件,覆盖模式
|
static <T> File |
writeLines(Collection<T> list,
File file,
Charset charset,
boolean isAppend)
将列表写入文件
|
public static List<String> readLines(File file, Charset charset) throws IOException
IOException - IO异常public static <T> File writeLines(Collection<T> list, File file, Charset charset) throws IOException
IOException - IO异常public static <T> File appendLines(Collection<T> list, File file, Charset charset) throws IOException
IOException - IO异常public static <T extends Collection<String>> T readLines(File file, Charset charset, T collection) throws IOException
IOException - IO异常public static <T> File writeLines(Collection<T> list, File file, Charset charset, boolean isAppend) throws IOException
IOException - IO异常public static boolean isNotEmpty(File file)
public static boolean isEmpty(File file)
public static <T> boolean isEmpty(T[] array)
public static File touch(File file) throws IOException
IOException - IO异常public static File mkParentDirs(File file) throws IOException
IOExceptionpublic static File getParent(File file, int level) throws IOException
getParent(file("d:/aaa/bbb/cc/ddd", 0)) -》 "d:/aaa/bbb/cc/ddd"
getParent(file("d:/aaa/bbb/cc/ddd", 2)) -》 "d:/aaa/bbb"
getParent(file("d:/aaa/bbb/cc/ddd", 4)) -》 "d:/"
getParent(file("d:/aaa/bbb/cc/ddd", 5)) -》 null
IOExceptionpublic static File mkdir(File dir)
public static boolean mkdirsSafely(File dir, int tryCount, long sleepMillis)
并发环境下,假设 test 目录不存在,如果线程A mkdirs "test/A" 目录,线程B mkdirs "test/B"目录,
其中一个线程可能会失败,进而导致以下代码抛出 FileNotFoundException 异常
file.getParentFile().mkdirs(); // 父目录正在被另一个线程创建中,返回 false
file.createNewFile(); // 抛出 IO 异常,因为该线程无法感知到父目录已被创建
public static boolean sleep(long millis)
public static BufferedReader getReader(File file, Charset charset) throws IOException
IOException - IO异常public static BufferedInputStream getInputStream(File file) throws IOException
IOException - 文件未找到public static BufferedInputStream toBuffered(InputStream in)
public static FileInputStream toStream(File file) throws IOException
IOExceptionpublic static BufferedReader getReader(InputStream in, Charset charset)
Copyright © 2023 tan. All rights reserved.