diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/file/FileUtil.java
index b2472a9f8..1536d6870 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/file/FileUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/file/FileUtil.java
@@ -252,6 +252,7 @@ public class FileUtil extends PathUtil {
}
}
+ // region ----- file and newFile
/**
* 创建File对象,相当于调用new File(),不做任何处理
*
@@ -375,6 +376,7 @@ public class FileUtil extends PathUtil {
public static File file(final URL url) {
return new File(URLUtil.toURI(url));
}
+ // endregion
/**
* 获取临时文件目录
@@ -396,13 +398,14 @@ public class FileUtil extends PathUtil {
return file(SystemUtil.getUserHomePath());
}
+ // region ----- exists
/**
* 判断文件是否存在,如果path为null,则返回false
*
* @param path 文件路径
* @return 如果存在返回true
*/
- public static boolean exist(final String path) {
+ public static boolean exists(final String path) {
return (null != path) && file(path).exists();
}
@@ -412,7 +415,7 @@ public class FileUtil extends PathUtil {
* @param file 文件
* @return 如果存在返回true
*/
- public static boolean exist(final File file) {
+ public static boolean exists(final File file) {
return (null != file) && file.exists();
}
@@ -423,7 +426,7 @@ public class FileUtil extends PathUtil {
* @param regexp 文件夹中所包含文件名的正则表达式
* @return 如果存在匹配文件返回true
*/
- public static boolean exist(final String directory, final String regexp) {
+ public static boolean exists(final String directory, final String regexp) {
final File file = new File(directory);
if (false == file.exists()) {
return false;
@@ -442,7 +445,9 @@ public class FileUtil extends PathUtil {
}
return false;
}
+ // endregion
+ // region ----- lastModifiedTime
/**
* 指定文件最后修改时间
*
@@ -450,7 +455,7 @@ public class FileUtil extends PathUtil {
* @return 最后修改时间
*/
public static Date lastModifiedTime(final File file) {
- if (false == exist(file)) {
+ if (false == exists(file)) {
return null;
}
@@ -466,6 +471,7 @@ public class FileUtil extends PathUtil {
public static Date lastModifiedTime(final String path) {
return lastModifiedTime(new File(path));
}
+ // endregion
/**
* 计算目录或文件的总大小
@@ -563,6 +569,7 @@ public class FileUtil extends PathUtil {
return file.lastModified() > timeMillis;
}
+ // region ----- touch
/**
* 创建文件及其父目录,如果这个文件存在,直接返回这个文件
* 此方法不对File对象类型做判断,如果File不存在,无法判断其类型
@@ -627,6 +634,7 @@ public class FileUtil extends PathUtil {
public static File touch(final String parent, final String path) throws IORuntimeException {
return touch(file(parent, path));
}
+ // endregion
/**
* 创建所给文件或目录的父目录
@@ -774,6 +782,7 @@ public class FileUtil extends PathUtil {
return dir.exists();
}
+ // region ----- createTempFile
/**
* 创建临时文件
* 创建后的文件名为 prefix[Randon].tmp
@@ -879,6 +888,7 @@ public class FileUtil extends PathUtil {
}
}
}
+ // endregion
/**
* 复制文件或目录
@@ -1475,8 +1485,7 @@ public class FileUtil extends PathUtil {
return FileTypeUtil.getType(file);
}
- // -------------------------------------------------------------------------------------------- in start
-
+ // region ----- in
/**
* 获得输入流
*
@@ -1571,9 +1580,9 @@ public class FileUtil extends PathUtil {
public static BufferedReader getReader(final String path, final Charset charset) throws IORuntimeException {
return getReader(file(path), charset);
}
+ // endregion
- // -------------------------------------------------------------------------------------------- in end
-
+ // region ----- read
/**
* 读取文件所有数据
* 文件的长度不能超过Integer.MAX_VALUE
@@ -2024,8 +2033,9 @@ public class FileUtil extends PathUtil {
public static T read(final File file, final Charset charset, final SerFunction readerHandler) throws IORuntimeException {
return FileReader.of(file, charset).read(readerHandler);
}
+ // endregion
- // -------------------------------------------------------------------------------------------- out start
+ // region ----- out
/**
* 获得一个输出流对象
@@ -2125,9 +2135,9 @@ public class FileUtil extends PathUtil {
return System.lineSeparator();
// return System.getProperty("line.separator");
}
+ // endregion
- // -------------------------------------------------------------------------------------------- out end
-
+ // region ----- write and append
/**
* 将String写入文件,覆盖模式,字符集为UTF-8
*
@@ -2653,6 +2663,7 @@ public class FileUtil extends PathUtil {
public static long writeToStream(final String fullFilePath, final OutputStream out) throws IORuntimeException {
return writeToStream(touch(fullFilePath), out);
}
+ // endregion
/**
* 可读的文件大小
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchMonitor.java b/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchMonitor.java
index d0900753d..eaea9dc67 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchMonitor.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchMonitor.java
@@ -1,23 +1,17 @@
package cn.hutool.core.io.watch;
import cn.hutool.core.io.file.FileUtil;
-import cn.hutool.core.io.IORuntimeException;
+import cn.hutool.core.io.file.PathUtil;
import cn.hutool.core.io.watch.watchers.WatcherChain;
-import cn.hutool.core.text.StrUtil;
import cn.hutool.core.net.url.URLUtil;
+import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.CharUtil;
import java.io.File;
-import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.LinkOption;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.WatchEvent;
-import java.nio.file.WatchService;
+import java.nio.file.*;
/**
* 路径监听器
@@ -32,27 +26,6 @@ import java.nio.file.WatchService;
public class WatchMonitor extends WatchServer {
private static final long serialVersionUID = 1L;
- /**
- * 事件丢失
- */
- public static final WatchEvent.Kind> OVERFLOW = WatchKind.OVERFLOW.getValue();
- /**
- * 修改事件
- */
- public static final WatchEvent.Kind> ENTRY_MODIFY = WatchKind.MODIFY.getValue();
- /**
- * 创建事件
- */
- public static final WatchEvent.Kind> ENTRY_CREATE = WatchKind.CREATE.getValue();
- /**
- * 删除事件
- */
- public static final WatchEvent.Kind> ENTRY_DELETE = WatchKind.DELETE.getValue();
- /**
- * 全部事件
- */
- public static final WatchEvent.Kind>[] EVENTS_ALL = WatchKind.ALL;
-
/**
* 监听路径,必须为目录
*/
@@ -245,7 +218,7 @@ public class WatchMonitor extends WatchServer {
* @return WatchMonitor
*/
public static WatchMonitor ofAll(final Path path, final Watcher watcher) {
- final WatchMonitor watchMonitor = of(path, EVENTS_ALL);
+ final WatchMonitor watchMonitor = of(path, WatchKind.ALL);
watchMonitor.setWatcher(watcher);
return watchMonitor;
}
@@ -317,7 +290,7 @@ public class WatchMonitor extends WatchServer {
@Override
public void init() throws WatchException {
//获取目录或文件路径
- if (false == Files.exists(this.path, LinkOption.NOFOLLOW_LINKS)) {
+ if (false == PathUtil.exists(this.path, false)) {
// 不存在的路径
final Path lastPathEle = FileUtil.getLastPathEle(this.path);
if (null != lastPathEle) {
@@ -330,12 +303,8 @@ public class WatchMonitor extends WatchServer {
}
//创建不存在的目录或父目录
- try {
- Files.createDirectories(this.path);
- } catch (final IOException e) {
- throw new IORuntimeException(e);
- }
- } else if (Files.isRegularFile(this.path, LinkOption.NOFOLLOW_LINKS)) {
+ PathUtil.mkdir(this.path);
+ } else if (PathUtil.isFile(this.path, false)) {
// 文件路径
this.filePath = this.path;
this.path = this.filePath.getParent();
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchUtil.java
index bd8ec72bf..fe574f455 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/watch/WatchUtil.java
@@ -250,7 +250,7 @@ public class WatchUtil {
* @return {@link WatchMonitor}
*/
public static WatchMonitor ofAll(final Path path, final int maxDepth, final Watcher watcher) {
- final WatchMonitor watchMonitor = of(path, maxDepth, WatchMonitor.EVENTS_ALL);
+ final WatchMonitor watchMonitor = of(path, maxDepth, WatchKind.ALL);
watchMonitor.setWatcher(watcher);
return watchMonitor;
}
@@ -378,7 +378,7 @@ public class WatchUtil {
* @since 4.5.2
*/
public static WatchMonitor createModify(final Path path, final int maxDepth, final Watcher watcher) {
- final WatchMonitor watchMonitor = of(path, maxDepth, WatchMonitor.ENTRY_MODIFY);
+ final WatchMonitor watchMonitor = of(path, maxDepth, WatchKind.MODIFY.getValue());
watchMonitor.setWatcher(watcher);
return watchMonitor;
}
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java
index 6b251c1a6..fca3a4c8e 100755
--- a/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/ftp/Ftp.java
@@ -646,7 +646,7 @@ public class Ftp extends AbstractFtp {
if (false == ftpFile.isDirectory()) {
// 本地不存在文件或者ftp上文件有修改则下载
- if (false == FileUtil.exist(destFile)
+ if (false == FileUtil.exists(destFile)
|| (ftpFile.getTimestamp().getTimeInMillis() > destFile.lastModified())) {
download(srcFile, destFile);
}
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java
index 20663b39b..b877050b1 100755
--- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java
@@ -478,7 +478,7 @@ public class Sftp extends AbstractFtp {
* @since 5.7.6
*/
public void upload(final String remotePath, final File file) {
- if (false == FileUtil.exist(file)) {
+ if (false == FileUtil.exists(file)) {
return;
}
if (file.isDirectory()) {
@@ -624,7 +624,7 @@ public class Sftp extends AbstractFtp {
if (false == item.getAttrs().isDir()) {
// 本地不存在文件或者ftp上文件有修改则下载
- if (false == FileUtil.exist(destFile)
+ if (false == FileUtil.exists(destFile)
|| (item.getAttrs().getMTime() > (destFile.lastModified() / 1000))) {
download(srcFile, destFile);
}
diff --git a/hutool-poi/src/main/java/cn/hutool/poi/word/DocUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/word/DocUtil.java
index d949e20a5..46b69c04d 100644
--- a/hutool-poi/src/main/java/cn/hutool/poi/word/DocUtil.java
+++ b/hutool-poi/src/main/java/cn/hutool/poi/word/DocUtil.java
@@ -26,7 +26,7 @@ public class DocUtil {
*/
public static XWPFDocument create(final File file) {
try {
- return FileUtil.exist(file) ? new XWPFDocument(OPCPackage.open(file)) : new XWPFDocument();
+ return FileUtil.exists(file) ? new XWPFDocument(OPCPackage.open(file)) : new XWPFDocument();
} catch (final InvalidFormatException e) {
throw new POIException(e);
} catch (final IOException e) {