diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java index a6902b823..56cd780e7 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -1383,7 +1383,21 @@ public class FileUtil extends PathUtil { * @param lastModifyTime 上次的改动时间 * @return 是否被改动 */ + @Deprecated public static boolean isModifed(File file, long lastModifyTime) { + return isModified(file,lastModifyTime); + } + + + /** + * 判断文件是否被改动
+ * 如果文件对象为 null 或者文件不存在,被视为改动 + * + * @param file 文件对象 + * @param lastModifyTime 上次的改动时间 + * @return 是否被改动 + */ + public static boolean isModified(File file, long lastModifyTime) { if (null == file || false == file.exists()) { return true; } 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 239c7caa9..9ac37de75 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/ssh/Sftp.java @@ -17,6 +17,7 @@ import com.jcraft.jsch.SftpException; import com.jcraft.jsch.SftpProgressMonitor; import java.io.File; +import java.io.FileInputStream; import java.io.OutputStream; import java.nio.charset.Charset; import java.util.ArrayList; @@ -319,7 +320,7 @@ public class Sftp extends AbstractFtp { @Override public boolean mkdir(String dir) { - if(isDir(dir)){ + if (isDir(dir)) { // 目录已经存在,创建直接返回 return true; } @@ -332,7 +333,7 @@ public class Sftp extends AbstractFtp { } @Override - public boolean isDir(String dir){ + public boolean isDir(String dir) { final SftpATTRS sftpATTRS; try { sftpATTRS = this.channel.stat(dir); @@ -423,6 +424,35 @@ public class Sftp extends AbstractFtp { } } + /** + * 将本地文件或者文件夹同步(覆盖)上传到远程路径 + * + * @param file 文件或者文件夹 + * @param remotePath 远程路径 + */ + public void syncUpload(File file, String remotePath) { + if (!FileUtil.exist(file)) { + return; + } + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files == null) { + return; + } + for (File fileItem : files) { + if (fileItem.isDirectory()) { + String mkdir = FileUtil.normalize(remotePath + "/" + fileItem.getName()); + this.syncUpload(fileItem, mkdir); + } else { + this.syncUpload(fileItem, remotePath); + } + } + } else { + this.mkDirs(remotePath); + this.upload(remotePath, file); + } + } + @Override public boolean upload(String destPath, File file) { put(FileUtil.getAbsolutePath(file), destPath);