1.引入maven依赖
<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
</dependency>
2.smb工具类
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;
public class SmbUtil {
protected static Logger logger = LoggerFactory.getLogger("SmbUtil");
/**
* 上传文件到共享文件夹
*
* @param is
* @param fileName
* @return 0:上传成功,-1上传失败
*/
public static int uploadFile(String url,InputStream is, String fileName) {
int flag = -1;
SmbFileOutputStream smbOut = null;
try {
smbOut = new SmbFileOutputStream(url + File.separator + fileName, false);
byte[] bt = new byte[8192];
int n = is.read(bt);
while (n != -1) {
smbOut.write(bt, 0, n);
smbOut.flush();
n = is.read(bt);
}
flag = 0;
logger.info("文件传输结束...");
} catch (SmbException e) {
logger.error(e.getMessage(), e);
} catch (MalformedURLException e) {
logger.error(e.getMessage(), e);
} catch (UnknownHostException e) {
logger.error("找不到主机...url:" + url, e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} finally {
try {
if (null != smbOut)
smbOut.close();
if (null != is)
is.close();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
return flag;
}
/**
* 创建文件夹
*
* @param remoteUrl
* @param folderName
*/
public static void smbMkDir(String remoteUrl, String folderName) {
SmbFile smbFile;
try {
// smb://userName:passWord@host/path/folderName
smbFile = new SmbFile(remoteUrl + folderName);
if (!smbFile.exists()) {
smbFile.mkdirs();
}
} catch (MalformedURLException e) {
logger.error(e.getMessage(), e);
} catch (SmbException e) {
logger.error(e.getMessage(), e);
}
}
/**
* 删除共享文件下的文件
* @param smbUrl
* @param fileName
*/
public static void deleteFile(String smbUrl, String fileName) {
SmbFile SmbFile;
try {
// smb://userName:passWord@host/path/shareFolderPath/fileName
SmbFile = new SmbFile(smbUrl+ File.separator + fileName);
if (SmbFile.exists()) {
SmbFile.delete();
}
} catch (MalformedURLException e) {
logger.error(e.getMessage(), e);
} catch (SmbException e) {
logger.error(e.getMessage(), e);
}
}
public static void main(String[] args) {
// // 服務器地址 格式為 smb://电脑用户名:电脑密码@电脑IP地址/IP共享的文件夹
// SmbUtil smb = SmbUtil.getInstance("");
String remoteUrl = "smb://test:123456@192.168.0.100/tmp/";
// smb.smbMkDir("smb://test:123456@192.168.0.100/tmp/file/admin/file","/2022/02");
// String localFile = "C:/test/测试01.png"; // 本地要上传的文件
// File file = new File(localFile);
// InputStream is = new BufferedInputStream(new FileInputStream(file));
//
// System.out.println(smb.uploadFile(is, "测试01.png"));// 上传文件
// SmbUtil smbUtil = SmbUtil.getInstance("smb://test:123456@192.168.0.100/tmp/file/admin");
deleteFile("smb://test:123456@192.168.0.101/tmp/file/admin", "images/2021/01/2a4c0cc0563311eb3f5a37bb387cdfbd.png");
}
}