java 共享队列 java 共享文件_java 共享队列

选择文件夹,右键展开菜单面板,找到属性。

java 共享队列 java 共享文件_java 共享队列_02

选择共享属性,点开可以添加 共享文件夹可以访问的用户。

远程访问需要启动 SMB/ 1.0/CIFS 文件共享支持。

进入 右键我的电脑 -> 属性 ->控制面板  -> 程序 -> 启用 或 关闭 windows 程序 找到  SMB/ 1.0/CIFS 文件共享支持,选中确认。

java 共享队列 java 共享文件_ci_03

支持 服务端的 远程共享文件 服务就开启了。

下面就工具类啦,其中 url 的格式为   smb://用户名:密码@IP地址/共享文件夹名称/

import com.songxin.tool.errors.BusinessExceptin;
import jcifs.CloseableIterator;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import org.springframework.util.FileCopyUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 读取远程文件工具类
*/
public class SmbFileUtil {
/**
* @param url 远程地址的 url
* @param path 本地存储文件的位置
*/
public static void loadSmbFile(String url,String path) throws BusinessExceptin {
try {
SmbFile smbFile = new SmbFile(url);
if (smbFile == null) {
throw new BusinessExceptin("不存在该远程文件" + url);
}
SmbFile[] files = smbFile.listFiles();
for (SmbFile sf : files) {
if (sf.isDirectory()) {
loadDirectory(sf,path);
} else {
File file = new File(path + File.separator + sf.getName());
FileCopyUtils.copy(new SmbFileInputStream(sf),new FileOutputStream(file));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 通过递归加载文件夹
*/
private static void loadDirectory(SmbFile smbFile,String path) throws IOException {
StringBuilder sb = new StringBuilder(path + File.separator + smbFile.getName());
File file = new File(sb.toString());
if(!file.exists()){
file.mkdir();
}
// 获取文件夹下的所有子文件
CloseableIterator ci = smbFile.children();
while (ci.hasNext()) {
SmbFile childrenFile = (SmbFile)ci.next();
if (childrenFile.isDirectory()) {
loadDirectory(childrenFile,sb.toString());
}else{
File ifc = new File(sb.toString() + File.separator + childrenFile.getName());
// 使用 SmbFileInputStream 读取远程文件
FileCopyUtils.copy(new SmbFileInputStream(childrenFile),new FileOutputStream(ifc));
}
}
}
}