/**
*
* @param localFilePath 要上传到共享文件夹的本地文件(需指定绝对路径)
* @param datePath 日期分割符,用于在共享文件夹新建目录
*/
public static void upload(String localFilePath,String datePath) {
InputStream in = null;
OutputStream out = null;
String host = "smb://192.1.6.9";
String userName="CKV:\\Stk";
String password="123456";
String remotePath="/remotePath";
try {
File localFile = new File(localFilePath);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, userName, password);
String destPath=remotePath+"/"+datePath; //
String remoteUrl = host+destPath+ (destPath.endsWith("/") ? "" : "/");
log.info("remoteUrl:{},localFilePath:{}",remoteUrl,localFilePath);
//新建远程的文件夹,需要加上auth
SmbFile remoteFolder = new SmbFile(remoteUrl,auth);
//判断远程文件夹是否存在,如果不存在则创建
if(!remoteFolder.exists()){
remoteFolder.mkdirs();
}
SmbFile remoteFile = new SmbFile(remoteUrl + "/" + localFile.getName(),auth);
remoteFile.connect();
in = new BufferedInputStream(new FileInputStream(localFile));
out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
byte[] buffer = new byte[4096];
int len = 0;
while ((len = in.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
}catch (Exception e) {
log.error(e.getMessage(), e);
}finally {
try {
if(out != null) {
out.close();
}
if(in != null) {
in.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
需要注意的是,共享文件夹需开放读写权限,开放完全控制。编码前需引入jcifs-1.3.17.jar。