!375 sftp 新增将本地文件或者文件夹同步上传到远程目录的方法

Merge pull request !375 from 不忘初心/v5-dev
This commit is contained in:
Looly 2021-07-21 13:13:56 +00:00 committed by Gitee
commit 4c16ec55b4
2 changed files with 46 additions and 2 deletions

View File

@ -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);
}
/**
* 判断文件是否被改动<br>
* 如果文件对象为 null 或者文件不存在被视为改动
*
* @param file 文件对象
* @param lastModifyTime 上次的改动时间
* @return 是否被改动
*/
public static boolean isModified(File file, long lastModifyTime) {
if (null == file || false == file.exists()) {
return true;
}

View File

@ -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);