Package org.aoju.bus.core.toolkit
Class FileKit
java.lang.Object
org.aoju.bus.core.toolkit.FileKit
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddContent(File dir, String content) 向文件头部添加版权等内容static <T> FileappendLines(Collection<T> list, File file) 将列表写入文件,追加模式static <T> FileappendLines(Collection<T> list, File file, String charset) 将列表写入文件,追加模式,策略为: 当文件为空,从开头追加,尾部不加空行 当有内容,换行追加,尾部不加空行 当有内容,并末尾有空行,依旧换行追加static <T> FileappendLines(Collection<T> list, File file, Charset charset) 将列表写入文件,追加模式static <T> FileappendLines(Collection<T> list, String path) 将列表写入文件,追加模式static <T> FileappendLines(Collection<T> list, String path, String charset) 将列表写入文件,追加模式static <T> FileappendLines(Collection<T> list, String path, Charset charset) 将列表写入文件,追加模式static FileappendString(String content, File file) 将String写入文件,UTF-8编码追加模式static FileappendString(String content, File file, String charset) 将String写入文件,追加模式static FileappendString(String content, File file, Charset charset) 将String写入文件,追加模式static FileappendString(String content, String path) 将String写入文件,UTF-8编码追加模式static FileappendString(String content, String path, String charset) 将String写入文件,追加模式static FileappendString(String content, String path, Charset charset) 将String写入文件,追加模式static File检查父完整路径是否为自路径的前半部分,如果不是说明不是子路径,可能存在slip注入static Checksum计算文件校验码static Checksumchecksum(InputStream in, Checksum checksum) 计算流的校验码,计算后关闭流static longchecksumCRC32(File file) 计算文件CRC32校验码static long计算流CRC32校验码,计算后关闭流static void清空文件夹 注意:清空文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作static void清空文件夹 注意:清空文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作static void清空目录static StringcleanInvalid(String fileName) 清除文件名中的在Windows下不支持的非法字符,包括: \ / : * ?static booleancontainsInvalid(String fileName) 文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ?static booleancontentEquals(File file1, File file2) 比较两个文件内容是否相同 首先比较长度,长度一致再比较内容 此方法来自Apache Commons iostatic booleancontentEqualsIgnoreEOL(File file1, File file2, Charset charset) 比较两个文件内容是否相同 首先比较长度,长度一致再比较内容,比较内容采用按行读取,每行比较 此方法来自Apache Commons iostatic FileconvertCharset(File file, Charset srcCharset, Charset destCharset) 转换文件编码 此方法用于转换文件编码,读取的文件实际编码必须与指定的srcCharset编码一致,否则导致乱码static FileconvertLineSeparator(File file, Charset charset, LineSeparator lineSeparator) 转换换行符 将给定文件的换行符转换为指定换行符static File复制文件或目录 情况如下:static File复制文件或目录 如果目标文件为目录,则将源文件以相同文件名拷贝到目标目录static FilecopyFile(File src, File dest, StandardCopyOption... options) 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件static longcopyFile(File input, OutputStream output) 将字节从File复制到OutputStream这个方法在内部缓冲输入,所以不需要使用BufferedInputStreamstatic FilecopyFile(String src, String dest, StandardCopyOption... options) 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件static PathcopyFile(Path src, Path target, StandardCopyOption... options) 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件static RandomAccessFilecreateRandomAccessFile(File file, FileMode mode) static RandomAccessFilecreateRandomAccessFile(Path path, FileMode mode) static File在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].tmp 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响static FilecreateTempFile(File dir) 创建临时文件 创建后的文件名为 prefix[Randon].tmpstatic FilecreateTempFile(File dir, boolean isReCreat) 创建临时文件 创建后的文件名为 prefix[Randon].tmpstatic FilecreateTempFile(String suffix, boolean isReCreat) 在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].suffix 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响static FilecreateTempFile(String prefix, String suffix, boolean isReCreat) 在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].suffix 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响static FilecreateTempFile(String prefix, String suffix, File dir, boolean isReCreat) 创建临时文件 创建后的文件名为 prefix[Randon].suffixstatic void删除文件或者文件夹 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作static void删除文件或者文件夹 路径如果为相对路径,会转换为ClassPath路径!static void删除文件或者文件夹 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作static boolean判断文件路径是否有指定后缀,忽略大小写 常用语判断扩展名static boolean检查两个文件是否是同一个文件 所谓文件相同,是指File对象是否指向同一个文件或文件夹static boolean检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹static boolean判断文件是否存在,如果file为null,则返回falsestatic boolean判断文件是否存在,如果path为null,则返回falsestatic boolean是否存在匹配文件static boolean判断文件或目录是否存在static File创建File对象 此方法会检查slip漏洞,漏洞说明见http://blog.nsfocus.net/zip-slip-2/static File通过多层目录参数创建文件 此方法会检查slip漏洞,漏洞说明见http://blog.nsfocus.net/zip-slip-2/static File创建File对象,自动识别相对或绝对路径,相对路径将自动从ClassPath下寻找static File通过多层目录创建文件static File创建File对象 此方法会检查slip漏洞,漏洞说明见http://blog.nsfocus.net/zip-slip-2/static File创建File对象static File创建File对象static StringgetAbsolutePath(File file) 获取标准的绝对路径static StringgetAbsolutePath(String path) 获取绝对路径,相对于ClassPath的目录 如果给定就是绝对路径,则返回原路径,原路径把所有\替换为/ 兼容Spring风格的路径表示,例如:classpath:config/example.setting也会被识别后转换static StringgetAbsolutePath(String path, Class<?> baseClass) 获取绝对路径 此方法不会判定给定路径是否有效(文件或目录存在)static BasicFileAttributesgetAttributes(Path path, boolean isFollowLinks) 获取文件属性static BOMInputStreamgetBOMInputStream(File file) 获得BOM输入流,用于处理带BOM头的文件static BufferedReadergetBOMReader(File file) 读取带BOM头的文件为Readerstatic StringgetCanonicalPath(File file) 获取规范的绝对路径static BufferedInputStreamgetInputStream(File file) 获得输入流static BufferedInputStreamgetInputStream(String path) 获得输入流static BufferedInputStreamgetInputStream(Path path) 获得输入流static PathgetLastPathEle(Path path) 获取指定位置的最后一个子路径部分static String获取当前系统的换行分隔符static StringgetMediaType(String path) 根据文件扩展名获得MediaTypestatic StringgetMediaType(String filePath, String defaultValue) 根据文件扩展名获得MimeTypestatic StringgetMediaType(Path file) 获得文件的MediaTypestatic String返回文件名static String返回文件名static String获取Path文件名static BufferedOutputStreamgetOutputStream(File file) 获得一个输出流对象static BufferedOutputStreamgetOutputStream(String path) 获得一个输出流对象static File获取指定文件的父路径static File获取指定层级的父路径static String获取指定层级的父路径static PathgetPathEle(Path path, int index) 获取指定位置的子路径部分,支持负数,例如index为-1表示从后数第一个节点位置static String返回主文件名static String返回主文件名static PrintWritergetPrintWriter(File file, String charset, boolean isAppend) 获得一个打印写入对象,可以有printstatic PrintWritergetPrintWriter(File file, Charset charset, boolean isAppend) 获得一个打印写入对象,可以有printstatic PrintWritergetPrintWriter(String path, String charset, boolean isAppend) 获得一个打印写入对象,可以有printstatic PrintWritergetPrintWriter(String path, Charset charset, boolean isAppend) 获得一个打印写入对象,可以有printstatic BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReader获得一个文件读取器static BufferedReadergetReaders(String resurce, Charset charset) 从ClassPath资源中获取BufferedReaderstatic ResourcegetResource(File file) 获取FileResource资源对象static ResourcegetResource(String path) static ResourcegetResource(URL url) 获取UriResource资源对象static InputStream从ClassPath资源中获取InputStreamstatic InputStreamgetStreamSafe(String resurce) 从ClassPath资源中获取InputStream,当资源不存在时返回nullstatic String获取文件后缀名,扩展名不带“.”static String获得文件后缀名,扩展名不带“.”static File获取临时文件目录static String获取临时文件路径(绝对路径)static String根据文件流的头部信息获得文件类型static URL获得资源的URL 路径用/分隔,例如:static URL获得资源相对路径对应的URL获取指定路径下的资源列表 路径格式必须为目录格式,用/分隔,例如:获取指定路径下的资源列表 路径格式必须为目录格式,用/分隔,例如:static File获取用户目录static String获取用户路径(绝对路径)static File获取Web项目下的web root路径 原理是首先获取ClassPath路径,由于在web项目中ClassPath位于 WEB-INF/classes/下,故向上获取两级目录即可static BufferedWriter获得一个带缓存的写入对象static BufferedWriter获得一个带缓存的写入对象static BufferedWriter获得一个带缓存的写入对象static BufferedWriter获得一个带缓存的写入对象static intindexOfLastSeparator(String filename) 返回最后一个目录分隔符的索引static intindexOfSuffix(String filename) 返回最后一个扩展分隔符的索引点.static booleanisAbsolutePath(String path) 给定路径已经是绝对路径 此方法并没有针对路径做标准化,建议先执行normalize(String)方法标准化路径后判断 绝对路径判断条件是: 以/开头的路径 满足类似于 c:/xxxxx,其中祖母随意,不区分大小写 满足类似于 d:\xxxxx,其中祖母随意,不区分大小写static booleanisDirectory(File file) 判断是否为目录,如果file为null,则返回falsestatic booleanisDirectory(String path) 判断是否为目录,如果path为null,则返回falsestatic booleanisDirectory(Path path) 判断是否为目录,如果file为null,则返回false 此方法不会追踪到软链对应的真实地址,即软链被当作文件static booleanisDirectory(Path path, boolean isFollowLinks) 判断是否为目录,如果file为null,则返回falsestatic booleanisDirEmpty(File dir) 目录是否为空static booleanisDirEmpty(Path dirPath) 目录是否为空static boolean判断文件或目录是否存在static boolean文件是否为空 目录:里面没有文件时为空 文件:文件大小为0时为空static booleanisExistsAndNotDirectory(Path path, boolean isFollowLinks) 判断是否为非目录 如果path为null,返回false如果path不存在,返回falsestatic boolean判断是否为文件,如果file为null,则返回falsestatic boolean判断是否为文件,如果path为null,则返回falsestatic boolean判断是否为文件,如果file为null,则返回falsestatic booleanisModified(File file, long lastModifyTime) 判断文件是否被改动 如果文件对象为 null 或者文件不存在,被视为改动static booleanisNotEmpty(File file) 目录是否为空static boolean判断给定的目录是否为给定文件或文件夹的子目录static boolean判断给定的目录是否为给定文件或文件夹的子目录static boolean检查文件名的扩展名是否指定的扩展名static boolean检查文件名的扩展名是否为指定的扩展名之一static booleanisSuffix(String filename, Collection<String> suffixs) 检查文件名的扩展名是否为指定的扩展名之一static boolean判断是否为符号链接文件static boolean根据文件名检查文件类型,忽略大小写static boolean是否为Windows环境static intlastIndexOfSeparator(String filePath) 获得最后一个文件路径分隔符的位置static DatelastModifiedTime(File file) 指定文件最后修改时间static DatelastModifiedTime(String path) 指定路径文件最后修改时间listFileNames(String path) 获得指定目录下所有文件 不会扫描子目录static <T> Tload(File file, Charset charset, FileReader.ReaderHandler<T> readerHandler) 按照给定的readerHandler读取文件中的数据static <T> Tload(File file, FileReader.ReaderHandler<T> readerHandler) 按照给定的readerHandler读取文件中的数据static <T> Tload(String path, String charset, FileReader.ReaderHandler<T> readerHandler) 按照给定的readerHandler读取文件中的数据static <T> Tload(String path, Charset charset, FileReader.ReaderHandler<T> readerHandler) 按照给定的readerHandler读取文件中的数据static <T> Tload(String path, FileReader.ReaderHandler<T> readerHandler) 按照给定的readerHandler读取文件中的数据递归遍历目录以及子目录中的所有文件loopFiles(File file, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果递归遍历目录以及子目录中的所有文件loopFiles(String path, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果loopFiles(Path path, int maxDepth, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果loopFiles(Path path, FileFilter fileFilter) 递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果static File[]列出指定路径下的目录和文件 给定的绝对路径不能是压缩包中的路径static File创建文件夹,会递归自动创建其不存在的父文件夹,如果存在直接返回此文件夹 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static File创建文件夹,如果存在直接返回此文件夹 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static Path创建所给目录及其父目录static booleanmkdirsSafely(File dir, int tryCount, long sleepMillis) 安全地级联创建目录 (确保并发环境下能创建成功)static FilemkParentDirs(File file) 创建所给文件或目录的父目录static FilemkParentDirs(String path) 创建父文件夹,如果存在直接返回此文件夹static PathmkParentDirs(Path path) 创建所给文件或目录的父目录static File移动文件或目录到目标中,例如: 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行 如果src为文件,target为文件,则按照是否覆盖参数执行 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d 如果src为目录,target为文件,抛出IllegalArgumentException如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b" 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"static Path移动文件或目录到目标中,例如: 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行 如果src为文件,target为文件,则按照是否覆盖参数执行 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d 如果src为目录,target为文件,抛出IllegalArgumentException如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b" 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"static PathmoveContent(Path src, Path target, boolean isOverride) 移动文件或目录内容到目标中,例如: 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行 如果src为文件,target为文件,则按照是否覆盖参数执行 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d 如果src为目录,target为文件,抛出IllegalArgumentException如果src为目录,target为目录,则将源目录下的内容移动到目标路径目录中 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录下的内容移动到目标路径目录中static boolean给定文件或目录的最后修改时间是否晚于给定时间static boolean给定文件或目录的最后修改时间是否晚于给定时间static File创建File对象,相当于调用new File(),不做任何处理static String修复路径 如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留 1.static booleanpathEquals(File file1, File file2) 文件路径是否相同 取两个文件的绝对路径比较,在Windows下忽略大小写,在Linux下不忽略static StringreadableFileSize(long size) 可读的文件大小 参考 http://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etcstatic StringreadableFileSize(File file) 可读的文件大小static byte[]读取文件所有数据 文件的长度不能超过Integer.MAX_VALUEstatic byte[]读取文件所有数据 文件的长度不能超过Integer.MAX_VALUEstatic String读取Classpath下的资源为字符串,使用UTF-8编码static String读取Classpath下的资源为字符串static String读取文件static StringreadLine(RandomAccessFile file, Charset charset) 单行处理文件内容static voidreadLine(RandomAccessFile file, Charset charset, XConsumer<String> lineHandler) 单行处理文件内容从文件中读取每一行数据从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据从文件中读取每一行数据static void按行处理文件内容static <T extends Collection<String>>
T从文件中读取每一行数据static void按行处理文件内容,编码为UTF-8static <T extends Collection<String>>
T从文件中读取每一行数据,数据编码为UTF-8static voidreadLines(RandomAccessFile file, Charset charset, XConsumer<String> lineHandler) 按行处理文件内容从文件中读取每一行数据,编码为UTF-8从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行的UTF-8编码数据从文件中读取每一行数据从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据static <T extends Collection<String>>
T从文件中读取每一行数据,编码为UTF-8static StringreadString(File file) 读取文件内容static StringreadString(File file, String charsetName) 读取文件内容static StringreadString(File file, Charset charset) 读取文件内容static StringreadString(String path) 读取文件内容static StringreadString(String path, String charsetName) 读取文件内容static StringreadString(String path, Charset charset) 读取文件内容static StringreadString(URL url, String charset) 读取文件内容static StringremoveSuffix(String filename) 从文件名中删除扩展名.static File修改文件或目录的文件名,不变更路径,只是简单修改文件名,不保留扩展名static File修改文件或目录的文件名,不变更路径,只是简单修改文件名 重命名有两种模式: 1、isRetainExt为true时,保留原扩展名:static Path修改文件或目录的文件名,不变更路径,只是简单修改文件名static long计算目录或文件的总大小 当给定对象为文件时,直接调用File.length()当给定对象为目录时,遍历目录下的所有文件和目录,递归计算其大小,求和返回 此方法不包括目录本身的占用空间大小static long计算目录或文件的总大小 当给定对象为文件时,直接调用File.length()当给定对象为目录时,遍历目录下的所有文件和目录,递归计算其大小,求和返回static String获得相对子路径static String获得相对子路径,忽略大小写static Path获取指定位置的子路径部分,支持负数,例如起始为-1表示从后数第一个节点位置static void文件内容跟随器,实现类似Linux下"tail -f"命令功能 此方法会阻塞当前线程static void文件内容跟随器,实现类似Linux下"tail -f"命令功能 此方法会阻塞当前线程static void文件内容跟随器,实现类似Linux下"tail -f"命令功能 此方法会阻塞当前线程static PathtoAbsNormal(Path path) 将Path路径转换为标准的绝对路径static File创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static File创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static File创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static File创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型static void递归遍历目录并处理目录下的文件,可以处理目录或文件: 非目录则直接调用Consumer处理 目录则递归调用此方法处理static voidwalkFiles(Path start, int maxDepth, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理static voidwalkFiles(Path start, FileVisitor<? super Path> visitor) 遍历指定path下的文件并做处理static FilewriteBytes(byte[] data, File dest) 写数据到文件中static FilewriteBytes(byte[] data, File dest, int off, int len, boolean isAppend) 写入数据到文件static FilewriteBytes(byte[] data, String path) 写数据到文件中static FilewriteFromStream(InputStream in, File dest) 将流的内容写入文件static FilewriteFromStream(InputStream in, File dest, boolean isCloseIn) 将流的内容写入文件static FilewriteFromStream(InputStream in, String path) 将路径对应文件写入流中,此方法不会关闭输出流static <T> FilewriteLines(Collection<T> list, File file) 将列表写入文件,覆盖模式,编码为UTF-8static <T> FilewriteLines(Collection<T> list, File file, String charset) 将列表写入文件,覆盖模式static <T> FilewriteLines(Collection<T> list, File file, String charset, boolean isAppend) 将列表写入文件static <T> FilewriteLines(Collection<T> list, File file, Charset charset) 将列表写入文件,覆盖模式static <T> FilewriteLines(Collection<T> list, File file, Charset charset, boolean isAppend) 将列表写入文件static <T> FilewriteLines(Collection<T> list, String path) 将列表写入文件,覆盖模式,编码为UTF-8static <T> FilewriteLines(Collection<T> list, String path, String charset) 将列表写入文件,覆盖模式static <T> FilewriteLines(Collection<T> list, String path, String charset, boolean isAppend) 将列表写入文件static <T> FilewriteLines(Collection<T> list, String path, Charset charset) 将列表写入文件,覆盖模式static <T> FilewriteLines(Collection<T> list, String path, Charset charset, boolean isAppend) 将列表写入文件static File将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔static File将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔static FilewriteString(String content, File file) 将String写入文件,覆盖模式,字符集为UTF-8static FilewriteString(String content, File file, String charset) 将String写入文件,覆盖模式static FilewriteString(String content, File file, Charset charset) 将String写入文件,覆盖模式static FilewriteString(String content, String path) 将String写入文件,覆盖模式,字符集为UTF-8static FilewriteString(String content, String path, String charset) 将String写入文件,覆盖模式static FilewriteString(String content, String path, Charset charset) 将String写入文件,覆盖模式static longwriteToStream(File file, OutputStream out) 将文件写入流中,此方法不会关闭输出流static longwriteToStream(String path, OutputStream out) 将流的内容写入文件
-
Constructor Details
-
FileKit
public FileKit()
-
-
Method Details
-
isWindows
public static boolean isWindows()是否为Windows环境- Returns:
- 是否为Windows环境
-
isEmpty
文件是否为空 目录:里面没有文件时为空 文件:文件大小为0时为空- Parameters:
file- 文件- Returns:
- 是否为空, 当提供非目录时, 返回false
-
isNotEmpty
目录是否为空- Parameters:
file- 目录- Returns:
- 是否为空, 当提供非目录时, 返回false
-
isDirEmpty
目录是否为空- Parameters:
dirPath- 目录- Returns:
- 是否为空
- Throws:
InternalException- IOException
-
isDirEmpty
-
ls
-
isFile
判断是否为文件,如果path为null,则返回false- Parameters:
path- 文件路径- Returns:
- 如果为文件true
-
isFile
判断是否为文件,如果file为null,则返回false- Parameters:
file- 文件- Returns:
- 如果为文件true
-
isFile
判断是否为文件,如果file为null,则返回false- Parameters:
path- 文件isFollowLinks- 是否跟踪软链(快捷方式)- Returns:
- 如果为文件true
-
isDirectory
判断是否为目录,如果path为null,则返回false- Parameters:
path- 文件路径- Returns:
- 如果为目录true
-
isDirectory
-
isDirectory
判断是否为目录,如果file为null,则返回false- Parameters:
file- 文件- Returns:
- 如果为目录true
-
isDirectory
-
isExistsAndNotDirectory
-
file
-
file
-
file
-
file
-
file
-
file
-
file
-
loopFiles
-
loopFiles
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录的路径fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录- Returns:
- 文件列表
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果- Parameters:
file- 当前遍历文件或目录fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录- Returns:
- 文件列表
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供path为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
-
loopFiles
递归遍历目录以及子目录中的所有文件 如果提供file为文件,直接返回过滤结果- Parameters:
path- 当前遍历文件或目录maxDepth- 遍历最大深度,-1表示遍历到没有目录为止fileFilter- 文件过滤规则对象,选择要保留的文件,只对文件有效,不过滤目录,null表示接收全部文件- Returns:
- 文件列表
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start- 起始路径,必须为目录visitor-FileVisitor接口,用于自定义在访问文件时,访问目录前后等节点做的操作- See Also:
-
walkFiles
-
walkFiles
遍历指定path下的文件并做处理- Parameters:
start- 起始路径,必须为目录maxDepth- 最大遍历深度,-1表示不限制深度visitor-FileVisitor接口,用于自定义在访问文件时,访问目录前后等节点做的操作- See Also:
-
exists
判断文件是否存在,如果path为null,则返回false- Parameters:
path- 文件路径- Returns:
- 如果存在返回true
-
exists
判断文件是否存在,如果file为null,则返回false- Parameters:
file- 文件- Returns:
- 如果存在返回true
-
exists
-
exists
判断文件或目录是否存在- Parameters:
path- 文件isFollowLinks- 是否跟踪软链(快捷方式)- Returns:
- 是否存在
-
newerThan
-
newerThan
给定文件或目录的最后修改时间是否晚于给定时间- Parameters:
file- 文件或目录timeMillis- 做为对比的时间- Returns:
- 是否晚于给定时间
-
touch
创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型- Parameters:
path- 文件的全路径,使用POSIX风格- Returns:
- 文件, 若路径为null, 返回null
- Throws:
InternalException- 异常
-
touch
创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型- Parameters:
file- 文件对象- Returns:
- 文件, 若路径为null, 返回null
- Throws:
InternalException- 异常
-
touch
创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型- Parameters:
parent- 父文件对象path- 文件路径- Returns:
- File
- Throws:
InternalException- 异常
-
touch
创建文件及其父目录,如果这个文件存在,直接返回这个文件 此方法不对File对象类型做判断,如果File不存在,无法判断其类型- Parameters:
parent- 父文件对象path- 文件路径- Returns:
- File
- Throws:
InternalException- 异常
-
delete
删除文件或者文件夹 路径如果为相对路径,会转换为ClassPath路径! 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
fileOrPath- 文件或者目录的路径- Throws:
InternalException- IO异常
-
delete
删除文件或者文件夹 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
file- 文件对象- Throws:
InternalException- IO异常
-
delete
删除文件或者文件夹 注意:删除文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
path- 文件对象- Throws:
InternalException- IO异常
-
clean
清空文件夹 注意:清空文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
dirPath- 文件夹路径- Throws:
InternalException- 异常
-
clean
清空文件夹 注意:清空文件夹时不会判断文件夹是否为空,如果不空则递归删除子文件或文件夹 某个文件删除失败会终止删除操作- Parameters:
directory- 文件夹- Throws:
InternalException- 异常
-
clean
-
mkdir
-
mkdir
-
mkdir
-
mkParentDirs
-
mkParentDirs
-
mkParentDirs
-
mkdirsSafely
安全地级联创建目录 (确保并发环境下能创建成功)并发环境下,假设 test 目录不存在,如果线程A mkdirs "test/A" 目录,线程B mkdirs "test/B"目录, 其中一个线程可能会失败,进而导致以下代码抛出 FileNotFoundException 异常 file.getParentFile().mkdirs(); // 父目录正在被另一个线程创建中,返回 false file.createNewFile(); // 抛出 IO 异常,因为该线程无法感知到父目录已被创建- Parameters:
dir- 待创建的目录tryCount- 最大尝试次数sleepMillis- 线程等待的毫秒数- Returns:
- true表示创建成功,false表示创建失败
-
createTempFile
创建临时文件 创建后的文件名为 prefix[Randon].tmp- Parameters:
dir- 临时文件创建的所在目录- Returns:
- 临时文件
- Throws:
InternalException- 异常
-
createTempFile
在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].tmp 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响- Returns:
- 临时文件
- Throws:
InternalException- IO异常
-
createTempFile
在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].suffix 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响- Parameters:
suffix- 后缀,如果null则使用默认.tmpisReCreat- 是否重新创建文件(删掉原来的,创建新的)- Returns:
- 临时文件
- Throws:
InternalException- IO异常
-
createTempFile
public static File createTempFile(String prefix, String suffix, boolean isReCreat) throws InternalException 在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].suffix 默认临时文件目录由系统属性java.io.tmpdir指定 在 UNIX 系统上,此属性的默认值通常是"tmp"或"vartmp"在 Microsoft Windows 系统上,它通常是"C:\\WINNT\\TEMP"调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响- Parameters:
prefix- 前缀,至少3个字符suffix- 后缀,如果null则使用默认.tmpisReCreat- 是否重新创建文件(删掉原来的,创建新的)- Returns:
- 临时文件
- Throws:
InternalException- IO异常
-
createTempFile
创建临时文件 创建后的文件名为 prefix[Randon].tmp- Parameters:
dir- 临时文件创建的所在目录isReCreat- 是否重新创建文件(删掉原来的,创建新的)- Returns:
- 临时文件
- Throws:
InternalException- 异常
-
createTempFile
public static File createTempFile(String prefix, String suffix, File dir, boolean isReCreat) throws InternalException 创建临时文件 创建后的文件名为 prefix[Randon].suffix- Parameters:
prefix- 前缀,至少3个字符suffix- 后缀,如果null则使用默认.tmpdir- 临时文件创建的所在目录isReCreat- 是否重新创建文件(删掉原来的,创建新的)- Returns:
- 临时文件
- Throws:
InternalException- 异常
-
copyFile
public static File copyFile(String src, String dest, StandardCopyOption... options) throws InternalException 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件- Parameters:
src- 源文件路径dest- 目标文件或目录路径,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- File
- Throws:
InternalException- 异常
-
copyFile
public static File copyFile(File src, File dest, StandardCopyOption... options) throws InternalException 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件- Parameters:
src- 源文件dest- 目标文件或目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
copyFile
public static Path copyFile(Path src, Path target, StandardCopyOption... options) throws InternalException 通过JDK7+的Files.copy(Path, Path, CopyOption...)方法拷贝文件- Parameters:
src- 源文件路径target- 目标文件或目录,如果为目录使用与源文件相同的文件名options-StandardCopyOption- Returns:
- Path
- Throws:
InternalException- 异常
-
copyFile
将字节从File复制到OutputStream这个方法在内部缓冲输入,所以不需要使用BufferedInputStream- Parameters:
input- 要读取的Fileoutput- 要写入的输出流OutputStream- Returns:
- 复制的字节数
- Throws:
NullPointerException- 如果输入或输出为空IOException- 如果发生I/O错误
-
copy
public static File copy(String srcPath, String destPath, boolean isOverride) throws InternalException 复制文件或目录 如果目标文件为目录,则将源文件以相同文件名拷贝到目标目录- Parameters:
srcPath- 源文件或目录destPath- 目标文件或目录,目标不存在会自动创建(目录、文件都创建)isOverride- 是否覆盖目标文件- Returns:
- 目标目录或文件
- Throws:
InternalException- 异常
-
copy
复制文件或目录 情况如下:1、src和dest都为目录,则将src目录及其目录下所有文件目录拷贝到dest下 2、src和dest都为文件,直接复制,名字为dest 3、src为文件,dest为目录,将src拷贝到dest目录下
- Parameters:
src- 源文件dest- 目标文件或目录,目标不存在会自动创建(目录、文件都创建)isOverride- 是否覆盖目标文件- Returns:
- 目标目录或文件
- Throws:
InternalException- 异常
-
rename
-
rename
-
rename
修改文件或目录的文件名,不变更路径,只是简单修改文件名 重命名有两种模式: 1、isRetainExt为true时,保留原扩展名:FileKit.rename(file, "aaa", true) xx/xx.png =》xx/aaa.png
2、isRetainExt为false时,不保留原扩展名,需要在newName中
FileKit.rename(file, "aaa.jpg", false) xx/xx.png =》xx/aaa.jpg
- Parameters:
file- 被修改的文件newName- 新的文件名,包括扩展名isRetainExt- 是否保留原文件的扩展名,如果保留,则newName不需要加扩展名isOverride- 是否覆盖目标文件- Returns:
- 目标文件
-
move
移动文件或目录到目标中,例如:- 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行
- 如果src为文件,target为文件,则按照是否覆盖参数执行
- 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d
- 如果src为目录,target为文件,抛出
IllegalArgumentException - 如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"
- 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"
- Parameters:
src- 源文件或目录路径target- 目标路径,如果为目录,则移动到此目录下isOverride- 是否覆盖目标文件- Returns:
- 目标文件或目录
-
move
移动文件或目录到目标中,例如:- 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行
- 如果src为文件,target为文件,则按照是否覆盖参数执行
- 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d
- 如果src为目录,target为文件,抛出
IllegalArgumentException - 如果src为目录,target为目录,则将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"
- 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录及其内容移动到目标路径目录中,如move("/a/b", "/c/d"),结果为"/c/d/b"
- Parameters:
src- 源文件或目录路径target- 目标路径,如果为目录,则移动到此目录下isOverride- 是否覆盖目标文件- Returns:
- 目标文件Path
-
moveContent
移动文件或目录内容到目标中,例如:- 如果src为文件,target为目录,则移动到目标目录下,存在同名文件则按照是否覆盖参数执行
- 如果src为文件,target为文件,则按照是否覆盖参数执行
- 如果src为文件,target为不存在的路径,则重命名源文件到目标指定的文件,如moveContent("/a/b", "/c/d"), d不存在,则b变成d
- 如果src为目录,target为文件,抛出
IllegalArgumentException - 如果src为目录,target为目录,则将源目录下的内容移动到目标路径目录中
- 如果src为目录,target为不存在的路径,则创建目标路径为目录,将源目录下的内容移动到目标路径目录中
- Parameters:
src- 源文件或目录路径target- 目标路径,如果为目录,则移动到此目录下isOverride- 是否覆盖目标文件- Returns:
- 目标文件Path
-
getCanonicalPath
-
getAbsolutePath
-
getAbsolutePath
-
getAbsolutePath
-
isAbsolutePath
给定路径已经是绝对路径 此方法并没有针对路径做标准化,建议先执行normalize(String)方法标准化路径后判断 绝对路径判断条件是:- 以/开头的路径
- 满足类似于 c:/xxxxx,其中祖母随意,不区分大小写
- 满足类似于 d:\xxxxx,其中祖母随意,不区分大小写
- Parameters:
path- 需要检查的Path- Returns:
- 是否已经是绝对路径
-
equals
检查两个文件是否是同一个文件 所谓文件相同,是指Path对象是否指向同一个文件或文件夹- Parameters:
file1- 文件1file2- 文件2- Returns:
- 是否相同
- Throws:
InternalException- IO异常- See Also:
-
equals
检查两个文件是否是同一个文件 所谓文件相同,是指File对象是否指向同一个文件或文件夹- Parameters:
file1- 文件1file2- 文件2- Returns:
- 是否相同
- Throws:
InternalException- 异常- See Also:
-
readFile
-
listFileNames
获得指定目录下所有文件 不会扫描子目录- Parameters:
path- 相对ClassPath的目录或者绝对路径目录- Returns:
- 文件路径列表(如果是jar中的文件, 则给定类似.jar ! / xxx / xxx的路径)
- Throws:
InternalException- 异常
-
newFile
-
getTmpDirPath
-
getTmpDir
-
getUserHomePath
-
getUserHomeDir
-
indexOfSuffix
返回最后一个扩展分隔符的索引点.- Parameters:
filename- 查找最后一个路径分隔符的文件名- Returns:
- 最后一个分隔符字符的索引,如果没有这样的字符,则为-1
-
indexOfLastSeparator
返回最后一个目录分隔符的索引此方法将处理Unix或Windows格式的文件 返回最后一个正斜杠或反斜杠的位置.
- Parameters:
filename- 查找最后一个路径分隔符的文件名- Returns:
- 最后一个分隔符字符的索引,如果没有这样的字符,则为-1
-
lastModifiedTime
-
lastModifiedTime
-
size
计算目录或文件的总大小 当给定对象为文件时,直接调用File.length()当给定对象为目录时,遍历目录下的所有文件和目录,递归计算其大小,求和返回 此方法不包括目录本身的占用空间大小- Parameters:
file- 目录或文件,null或者文件不存在返回0- Returns:
- 总大小,bytes长度
-
size
计算目录或文件的总大小 当给定对象为文件时,直接调用File.length()当给定对象为目录时,遍历目录下的所有文件和目录,递归计算其大小,求和返回- Parameters:
file- 目录或文件includeDirSize- 是否包括每层目录本身的大小- Returns:
- 总大小, bytes长度
-
isSymlink
-
contentEquals
比较两个文件内容是否相同 首先比较长度,长度一致再比较内容 此方法来自Apache Commons io- Parameters:
file1- 文件1file2- 文件2- Returns:
- 两个文件内容一致返回true, 否则false
- Throws:
InternalException- 异常
-
contentEqualsIgnoreEOL
public static boolean contentEqualsIgnoreEOL(File file1, File file2, Charset charset) throws InternalException 比较两个文件内容是否相同 首先比较长度,长度一致再比较内容,比较内容采用按行读取,每行比较 此方法来自Apache Commons io- Parameters:
file1- 文件1file2- 文件2charset- 编码,null表示使用平台默认编码 两个文件内容一致返回true,否则false- Returns:
- the boolean
- Throws:
InternalException- 异常
-
pathEquals
-
lastIndexOfSeparator
获得最后一个文件路径分隔符的位置- Parameters:
filePath- 文件路径- Returns:
- 最后一个文件路径分隔符的位置
-
isModified
判断文件是否被改动 如果文件对象为 null 或者文件不存在,被视为改动- Parameters:
file- 文件对象lastModifyTime- 上次的改动时间- Returns:
- 是否被改动
-
normalize
修复路径 如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留- 1. 统一用 /
- 2. 多个 / 转换为一个 /
- 3. 去除左边空格
- 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径
栗子:
"/foo//" = "/foo/" "/foo/./" = "/foo/" "/foo/../bar" = "/bar" "/foo/../bar/" = "/bar/" "/foo/../bar/../baz" = "/baz" "foo/bar/.." = "foo" "foo/../bar" = "bar" "foo/../../bar" = "bar" "//server/foo/../bar" = "/server/bar" "//server/../bar" = "/bar" "~/foo/../bar/" = "~/bar/" "~/../bar" =》 普通用户运行是'bar的home目录',ROOT用户运行是'/bar'
- Parameters:
path- 原路径- Returns:
- 修复后的路径
-
subPath
-
subPath
获得相对子路径,忽略大小写栗子:
dirPath: /data/aaa/bbb filePath: /data/aaa/bbb/ccc = ccc dirPath: /data/Aaa/bbb filePath: /data/aaa/bbb/ccc.txt = ccc.txt dirPath: /data/Aaa/bbb filePath: /data/aaa/bbb/ = ""
- Parameters:
dirPath- 父路径filePath- 文件路径- Returns:
- 相对子路径
-
getPathEle
-
getLastPathEle
-
subPath
-
getName
-
getName
-
getName
-
getSuffix
-
getSuffix
-
getPrefix
-
getPrefix
-
endsWith
-
getType
根据文件流的头部信息获得文件类型- Parameters:
file- 文件File- Returns:
- 类型, 文件的扩展名, 未找到为
null - Throws:
InternalException- 异常- See Also:
-
getAttributes
public static BasicFileAttributes getAttributes(Path path, boolean isFollowLinks) throws InternalException 获取文件属性- Parameters:
path- 文件路径PathisFollowLinks- 是否跟踪到软链对应的真实路径- Returns:
BasicFileAttributes- Throws:
InternalException- 异常
-
getInputStream
获得输入流- Parameters:
path- Path- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
getInputStream
获得输入流- Parameters:
file- 文件- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
getInputStream
获得输入流- Parameters:
path- 文件路径- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
getBOMInputStream
获得BOM输入流,用于处理带BOM头的文件- Parameters:
file- 文件- Returns:
- 输入流
- Throws:
InternalException- 文件未找到
-
getBOMReader
读取带BOM头的文件为Reader- Parameters:
file- 文件- Returns:
- BufferedReader对象
-
getReader
获得一个文件读取器- Parameters:
path- 文件Path- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
file- 文件- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
path- 文件路径- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
path- 文件Pathcharset- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
file- 文件charsetName- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
file- 文件charset- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
path- 绝对路径charsetName- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getReader
获得一个文件读取器- Parameters:
path- 绝对路径charset- 字符集- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
readBytes
读取文件所有数据 文件的长度不能超过Integer.MAX_VALUE- Parameters:
file- 文件- Returns:
- 字节码
- Throws:
InternalException- 异常
-
readBytes
读取文件所有数据 文件的长度不能超过Integer.MAX_VALUE- Parameters:
filePath- 文件路径- Returns:
- 字节码
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
file- 文件- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
path- 文件路径- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
file- 文件charsetName- 字符集- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
file- 文件charset- 字符集- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
path- 文件路径charsetName- 字符集- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
path- 文件路径charset- 字符集- Returns:
- 内容
- Throws:
InternalException- 异常
-
readString
读取文件内容- Parameters:
url- 文件URLcharset- 字符集- Returns:
- 内容
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(String path, T collection) throws InternalException 从文件中读取每一行的UTF-8编码数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件路径collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(String path, String charset, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件路径charset- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(String path, Charset charset, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件路径charset- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(File file, T collection) throws InternalException 从文件中读取每一行数据,数据编码为UTF-8- Type Parameters:
T- 集合类型- Parameters:
file- 文件路径collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(File file, String charset, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
file- 文件路径charset- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(File file, Charset charset, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
file- 文件路径charset- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(URL url, T collection) throws InternalException 从文件中读取每一行数据,编码为UTF-8- Type Parameters:
T- 集合类型- Parameters:
url- 文件的URLcollection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(URL url, String charsetName, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
url- 文件的URLcharsetName- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
public static <T extends Collection<String>> T readLines(URL url, Charset charset, T collection) throws InternalException 从文件中读取每一行数据- Type Parameters:
T- 集合类型- Parameters:
url- 文件的URLcharset- 字符集collection- 集合- Returns:
- 文件中的每行内容的集合
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
url- 文件的URL- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
url- 文件的URLcharset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
url- 文件的URLcharset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据,编码为UTF-8- Parameters:
path- 文件路径- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
path- 文件路径charset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
path- 文件路径charset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
file- 文件- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
file- 文件charset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
从文件中读取每一行数据- Parameters:
file- 文件charset- 字符集- Returns:
- 文件中的每行内容的集合List
- Throws:
InternalException- 异常
-
readLines
按行处理文件内容,编码为UTF-8- Parameters:
file- 文件lineHandler-LineHandler行处理器- Throws:
InternalException- 异常
-
readLines
public static void readLines(File file, Charset charset, XConsumer<String> lineHandler) throws InternalException 按行处理文件内容- Parameters:
file- 文件charset- 编码lineHandler-LineHandler行处理器- Throws:
InternalException- 异常
-
readLines
按行处理文件内容- Parameters:
file-RandomAccessFile文件charset- 编码lineHandler-LineHandler行处理器- Throws:
InternalException- 异常
-
readLine
单行处理文件内容- Parameters:
file-RandomAccessFile文件charset- 编码lineHandler-LineHandler行处理器
-
readLine
单行处理文件内容- Parameters:
file-RandomAccessFile文件charset- 编码- Returns:
- 行内容
-
load
public static <T> T load(String path, FileReader.ReaderHandler<T> readerHandler) throws InternalException 按照给定的readerHandler读取文件中的数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件的绝对路径readerHandler- Reader处理类- Returns:
- 从文件中load出的数据
- Throws:
InternalException- 异常
-
load
public static <T> T load(String path, String charset, FileReader.ReaderHandler<T> readerHandler) throws InternalException 按照给定的readerHandler读取文件中的数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件的绝对路径charset- 字符集readerHandler- Reader处理类- Returns:
- 从文件中load出的数据
- Throws:
InternalException- 异常
-
load
public static <T> T load(String path, Charset charset, FileReader.ReaderHandler<T> readerHandler) throws InternalException 按照给定的readerHandler读取文件中的数据- Type Parameters:
T- 集合类型- Parameters:
path- 文件的绝对路径charset- 字符集readerHandler- Reader处理类- Returns:
- 从文件中load出的数据
- Throws:
InternalException- 异常
-
load
public static <T> T load(File file, FileReader.ReaderHandler<T> readerHandler) throws InternalException 按照给定的readerHandler读取文件中的数据- Type Parameters:
T- 集合类型- Parameters:
file- 文件readerHandler- Reader处理类- Returns:
- 从文件中load出的数据
- Throws:
InternalException- 异常
-
load
public static <T> T load(File file, Charset charset, FileReader.ReaderHandler<T> readerHandler) throws InternalException 按照给定的readerHandler读取文件中的数据- Type Parameters:
T- 集合类型- Parameters:
file- 文件charset- 字符集readerHandler- Reader处理类- Returns:
- 从文件中load出的数据
- Throws:
InternalException- 异常
-
getOutputStream
获得一个输出流对象- Parameters:
file- 文件- Returns:
- 输出流对象
- Throws:
InternalException- 异常
-
getOutputStream
获得一个输出流对象- Parameters:
path- 输出到的文件路径,绝对路径- Returns:
- 输出流对象
- Throws:
InternalException- 异常
-
getWriter
public static BufferedWriter getWriter(String path, String charsetName, boolean isAppend) throws InternalException 获得一个带缓存的写入对象- Parameters:
path- 输出路径,绝对路径charsetName- 字符集isAppend- 是否追加- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getWriter
public static BufferedWriter getWriter(String path, Charset charset, boolean isAppend) throws InternalException 获得一个带缓存的写入对象- Parameters:
path- 输出路径,绝对路径charset- 字符集isAppend- 是否追加- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getWriter
public static BufferedWriter getWriter(File file, String charsetName, boolean isAppend) throws InternalException 获得一个带缓存的写入对象- Parameters:
file- 输出文件charsetName- 字符集isAppend- 是否追加- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getWriter
public static BufferedWriter getWriter(File file, Charset charset, boolean isAppend) throws InternalException 获得一个带缓存的写入对象- Parameters:
file- 输出文件charset- 字符集isAppend- 是否追加- Returns:
- BufferedReader对象
- Throws:
InternalException- 异常
-
getPrintWriter
public static PrintWriter getPrintWriter(String path, String charset, boolean isAppend) throws InternalException 获得一个打印写入对象,可以有print- Parameters:
path- 输出路径,绝对路径charset- 字符集isAppend- 是否追加- Returns:
- 打印对象
- Throws:
InternalException- 异常
-
getPrintWriter
public static PrintWriter getPrintWriter(String path, Charset charset, boolean isAppend) throws InternalException 获得一个打印写入对象,可以有print- Parameters:
path- 输出路径,绝对路径charset- 字符集isAppend- 是否追加- Returns:
- 打印对象
- Throws:
InternalException- 异常
-
getPrintWriter
public static PrintWriter getPrintWriter(File file, String charset, boolean isAppend) throws InternalException 获得一个打印写入对象,可以有print- Parameters:
file- 文件charset- 字符集isAppend- 是否追加- Returns:
- 打印对象
- Throws:
InternalException- 异常
-
getPrintWriter
public static PrintWriter getPrintWriter(File file, Charset charset, boolean isAppend) throws InternalException 获得一个打印写入对象,可以有print- Parameters:
file- 文件charset- 字符集isAppend- 是否追加- Returns:
- 打印对象
- Throws:
InternalException- 异常
-
getLineSeparator
-
writeString
将String写入文件,覆盖模式,字符集为UTF-8- Parameters:
content- 写入的内容path- 文件路径- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
writeString
将String写入文件,覆盖模式,字符集为UTF-8- Parameters:
content- 写入的内容file- 文件- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
writeString
public static File writeString(String content, String path, String charset) throws InternalException 将String写入文件,覆盖模式- Parameters:
content- 写入的内容path- 文件路径charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
writeString
public static File writeString(String content, String path, Charset charset) throws InternalException 将String写入文件,覆盖模式- Parameters:
content- 写入的内容path- 文件路径charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
writeString
将String写入文件,覆盖模式- Parameters:
content- 写入的内容file- 文件charset- 字符集- Returns:
- 被写入的文件
- Throws:
InternalException- 异常
-
writeString
将String写入文件,覆盖模式- Parameters:
content- 写入的内容file- 文件charset- 字符集- Returns:
- 被写入的文件
- Throws:
InternalException- 异常
-
appendString
将String写入文件,UTF-8编码追加模式- Parameters:
content- 写入的内容path- 文件路径- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
appendString
public static File appendString(String content, String path, String charset) throws InternalException 将String写入文件,追加模式- Parameters:
content- 写入的内容path- 文件路径charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
appendString
public static File appendString(String content, String path, Charset charset) throws InternalException 将String写入文件,追加模式- Parameters:
content- 写入的内容path- 文件路径charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
appendString
将String写入文件,UTF-8编码追加模式- Parameters:
content- 写入的内容file- 文件- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
appendString
将String写入文件,追加模式- Parameters:
content- 写入的内容file- 文件charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
appendString
public static File appendString(String content, File file, Charset charset) throws InternalException 将String写入文件,追加模式- Parameters:
content- 写入的内容file- 文件charset- 字符集- Returns:
- 写入的文件
- Throws:
InternalException- 异常
-
writeLines
将列表写入文件,覆盖模式,编码为UTF-8- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 绝对路径- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
将列表写入文件,覆盖模式,编码为UTF-8- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 绝对路径- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, String path, String charset) throws InternalException 将列表写入文件,覆盖模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 绝对路径charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, String path, Charset charset) throws InternalException 将列表写入文件,覆盖模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 绝对路径charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, File file, String charset) throws InternalException 将列表写入文件,覆盖模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, File file, Charset charset) throws InternalException 将列表写入文件,覆盖模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
将列表写入文件,追加模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
将列表写入文件,追加模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 文件路径- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
public static <T> File appendLines(Collection<T> list, String path, String charset) throws InternalException 将列表写入文件,追加模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 绝对路径charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
public static <T> File appendLines(Collection<T> list, File file, String charset) throws InternalException 将列表写入文件,追加模式,策略为:- 当文件为空,从开头追加,尾部不加空行
- 当有内容,换行追加,尾部不加空行
- 当有内容,并末尾有空行,依旧换行追加
- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
public static <T> File appendLines(Collection<T> list, String path, Charset charset) throws InternalException 将列表写入文件,追加模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 绝对路径charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
appendLines
public static <T> File appendLines(Collection<T> list, File file, Charset charset) throws InternalException 将列表写入文件,追加模式- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, String path, String charset, boolean isAppend) throws InternalException 将列表写入文件- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 文件路径charset- 字符集isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, String path, Charset charset, boolean isAppend) throws InternalException 将列表写入文件- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表path- 文件路径charset- 字符集isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, File file, String charset, boolean isAppend) throws InternalException 将列表写入文件- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeLines
public static <T> File writeLines(Collection<T> list, File file, Charset charset, boolean isAppend) throws InternalException 将列表写入文件- Type Parameters:
T- 集合元素类型- Parameters:
list- 列表file- 文件charset- 字符集isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeMap
public static File writeMap(Map<?, ?> map, File file, String kvSeparator, boolean isAppend) throws InternalException将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔- Parameters:
map- Mapfile- 文件kvSeparator- 键和值之间的分隔符,如果传入null使用默认分隔符" = "isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeMap
public static File writeMap(Map<?, ?> map, File file, Charset charset, String kvSeparator, boolean isAppend) throws InternalException将Map写入文件,每个键值对为一行,一行中键与值之间使用kvSeparator分隔- Parameters:
map- Mapfile- 文件charset- 字符集编码kvSeparator- 键和值之间的分隔符,如果传入null使用默认分隔符" = "isAppend- 是否追加- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeBytes
写数据到文件中- Parameters:
data- 数据path- 目标文件- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeBytes
写数据到文件中- Parameters:
data- 数据dest- 目标文件- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeBytes
public static File writeBytes(byte[] data, File dest, int off, int len, boolean isAppend) throws InternalException 写入数据到文件- Parameters:
data- 数据dest- 目标文件off- 数据开始位置len- 数据长度isAppend- 是否追加模式- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeFromStream
将流的内容写入文件- Parameters:
in- 输入流dest- 目标文件- Returns:
- dest
- Throws:
InternalException- 异常
-
writeFromStream
public static File writeFromStream(InputStream in, File dest, boolean isCloseIn) throws InternalException 将流的内容写入文件- Parameters:
in- 输入流dest- 目标文件isCloseIn- 关闭输入流- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeFromStream
将路径对应文件写入流中,此方法不会关闭输出流- Parameters:
in- 输入流path- 文件绝对路径- Returns:
- 目标文件
- Throws:
InternalException- 异常
-
writeToStream
将文件写入流中,此方法不会关闭输出流- Parameters:
file- 文件out- 流- Returns:
- 写出的流byte数
- Throws:
InternalException- 异常
-
writeToStream
将流的内容写入文件- Parameters:
path- 文件绝对路径out- 输出流- Returns:
- 写出的流byte数
- Throws:
InternalException- 异常
-
readableFileSize
-
readableFileSize
可读的文件大小 参考 http://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etc- Parameters:
size- Long类型大小- Returns:
- 大小
-
convertCharset
-
convertLineSeparator
转换换行符 将给定文件的换行符转换为指定换行符- Parameters:
file- 文件charset- 编码lineSeparator- 换行符枚举- Returns:
- 被修改的文件
-
cleanInvalid
-
containsInvalid
文件名中是否包含在Windows下不支持的非法字符,包括: \ / : * ? " < > |- Parameters:
fileName- 文件名(必须不包括路径,否则路径符将被替换)- Returns:
- 是否包含非法字符
-
checksumCRC32
计算文件CRC32校验码- Parameters:
file- 文件,不能为目录- Returns:
- CRC32值
- Throws:
InternalException- 异常
-
checksumCRC32
计算流CRC32校验码,计算后关闭流- Parameters:
in- 文件,不能为目录- Returns:
- CRC32值
- Throws:
InternalException- 异常
-
checksum
计算文件校验码- Parameters:
file- 文件,不能为目录checksum-Checksum- Returns:
- Checksum
- Throws:
InternalException- 异常
-
checksum
计算流的校验码,计算后关闭流- Parameters:
in- 流checksum-Checksum- Returns:
- Checksum
- Throws:
InternalException- 异常
-
getWebRoot
获取Web项目下的web root路径 原理是首先获取ClassPath路径,由于在web项目中ClassPath位于 WEB-INF/classes/下,故向上获取两级目录即可- Returns:
- web root路径
-
getParent
-
getParent
获取指定层级的父路径getParent("/data/aaa/bbb/cc/ddd", 0) - "/data/aaa/bbb/cc/ddd" getParent("/data/aaa/bbb/cc/ddd", 2) - "/data/aaa/bbb" getParent("/data/aaa/bbb/cc/ddd", 4) - "/data/" getParent("/data/aaa/bbb/cc/ddd", 5) - null- Parameters:
filePath- 目录或文件路径level- 层级- Returns:
- 路径File, 如果不存在返回null
-
getParent
获取指定层级的父路径getParent(file("/data/aaa/bbb/cc/ddd", 0)) - "/data/aaa/bbb/cc/ddd" getParent(file("/data/aaa/bbb/cc/ddd", 2)) - "/data/aaa/bbb" getParent(file("/data/aaa/bbb/cc/ddd", 4)) - "/data/" getParent(file("/data/aaa/bbb/cc/ddd", 5)) - null- Parameters:
file- 目录或文件level- 层级- Returns:
- 路径File, 如果不存在返回null
-
checkSlip
检查父完整路径是否为自路径的前半部分,如果不是说明不是子路径,可能存在slip注入见http://blog.nsfocus.net/zip-slip-2/
- Parameters:
parentFile- 父文件或目录file- 子文件或目录- Returns:
- 子文件或目录
- Throws:
IllegalArgumentException- 检查创建的子文件不在父目录中抛出此异常
-
getMediaType
-
getMediaType
-
getMediaType
-
removeSuffix
-
isSuffix
-
isSuffix
-
isSuffix
检查文件名的扩展名是否为指定的扩展名之一- Parameters:
filename- 要查询的文件名,null返回falsesuffixs- 要检查的扩展名,null检查是否没有扩展名- Returns:
- 如果文件名是扩展名之一,则为true
-
tail
-
tail
-
tail
-
createRandomAccessFile
- Parameters:
path- 文件Pathmode- 模式,见FileMode- Returns:
RandomAccessFile
-
createRandomAccessFile
- Parameters:
file- 文件mode- 模式,见FileMode- Returns:
RandomAccessFile
-
readers
-
readers
-
getReaders
从ClassPath资源中获取BufferedReader- Parameters:
resurce- ClassPath资源charset- 编码- Returns:
InputStream
-
getStream
从ClassPath资源中获取InputStream- Parameters:
resurce- ClassPath资源- Returns:
InputStream- Throws:
InternalException- 资源不存在异常
-
getStreamSafe
从ClassPath资源中获取InputStream,当资源不存在时返回null- Parameters:
resurce- ClassPath资源- Returns:
InputStream
-
getUrl
-
getUrl
-
getUrls
-
getUrls
-
getResource
- Parameters:
path- 路径,可以是绝对路径,也可以是相对路径(相对ClassPath)- Returns:
Resource资源对象
-
getResource
获取UriResource资源对象- Parameters:
url- URL- Returns:
Resource资源对象
-
getResource
获取FileResource资源对象 -
isType
-
isEexist
判断文件或目录是否存在- Parameters:
path- 文件isFollowLinks- 是否跟踪软链(快捷方式)- Returns:
- 是否存在
-
isSub
-
isSub
-
toAbsNormal
-
addContent
-