JCIFS实现远程服务器共享文件上传下载
2016-03-02 09:40
866 查看
JCIFS是CIFS 在JAVA中的一个实现,是samba组织负责维护开发的一个开源项目,专注于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰富的,具有可扩展能力且线程安全的客户端库。这一库可以应用于各种java虚拟机访问遵循CIFS/SMB网络传输协议的网络资源(通常是共享文件)。类似于java.io.File的接口形式,在多线程的工作方式下被证明是有效而容易使用的。
下面看代码说话。
下载实现文件:
二者相似,一个是输出,一个是输入。总结一下:
第一步:首先须知道读取的共享文件所在的IP地址、用户名、密码及目录结构。
例1:smb://userName:password@ip/filePath(一般远程读取其他服务器共享文件需要)
例2:smb://ip/filePath(读取应用本地可以不需要用户名和密码)
注意:远程主机要把对应的文件夹设置为共享,而且要保证在win+r中可以访问远程共享文件。
第二步:提供本地保存临时文件的地址目录;
例:D://temp (文件夹必须事先创建好,或者在程序中创建)
附JCIFS官网https://jcifs.samba.org/
下面看代码说话。
下载实现文件:
public void netWorkFileDown(String ip, String userName, String passWord, String filePath, OutputStream out) throws Exception { String info = ""; SmbFileInputStream in = null; try { if (StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(passWord)) { NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(ip, userName, passWord); SmbFile fp = new SmbFile("smb://" + ip + "/" + StringUtilDI.parseSystemDirectorySeparator(filePath,"/"),auth); in = new SmbFileInputStream(fp); } else { SmbFile fp = new SmbFile("smb://" + ip + "/" + StringUtilDI.parseSystemDirectorySeparator(filePath,"/")); in = new SmbFileInputStream(fp); } byte[] b = new byte[8192]; int n; while ((n = in.read(b)) > 0) { out.write(b, 0, n); } } catch (Exception e) { info = e.getMessage(); }finally{ if(null != in){ in.close(); } } }上传实现:
public void netWorkFileUpload(String ip, String userName, String passWord, String filePath, InputStream in) throws Exception { String info = ""; SmbFileOutputStream out = null; try { if (StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(passWord)) { NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(ip, userName, passWord); SmbFile fp = new SmbFile("smb://" + ip + "/" + StringUtilDI.parseSystemDirectorySeparator(filePath,"/"),auth); out = new SmbFileOutputStream(fp); } else { out = new SmbFileOutputStream("smb://" + ip + "/" + filePath); } byte[] b = new byte[8192]; int n; while ((n = in.read(b)) > 0) { out.write(b, 0, n); } } catch (Exception e) { e.printStackTrace(); info = e.getMessage(); }finally{ if(null != in){ in.close(); } if(null != out){ out.close(); } } }
二者相似,一个是输出,一个是输入。总结一下:
第一步:首先须知道读取的共享文件所在的IP地址、用户名、密码及目录结构。
例1:smb://userName:password@ip/filePath(一般远程读取其他服务器共享文件需要)
例2:smb://ip/filePath(读取应用本地可以不需要用户名和密码)
注意:远程主机要把对应的文件夹设置为共享,而且要保证在win+r中可以访问远程共享文件。
第二步:提供本地保存临时文件的地址目录;
例:D://temp (文件夹必须事先创建好,或者在程序中创建)
附JCIFS官网https://jcifs.samba.org/
相关文章推荐
- 自定义RatingBar,不同分辨率屏幕下图片拉伸或者显示不完整问题解决
- Windows 下用 gogs 配置局域网 git server
- 服务器空间 检测
- U盘从Fat32快速转换为NTFS
- 在eclipse中将android工程打包成apk 获取正式版本 Android 打包签名 从生成keystore到完成签名
- PHP下的MVC
- Java8のStream学习
- java8.Lambda表达式
- VMWare虚机连不了网
- MySql索引原理与使用大全
- jQuery name checked 模糊查找匹配ID
- 运行时机制
- tableview section之间的距离
- hibernate get 和load
- Activity四种启动模式及应用
- struts2工作原理
- LDA(Latent Dirichlet Allocation)相关论文阅读小结
- Android数据输入测试的checklist
- 蓝桥杯VIP试题 Huffuman树
- 利用Intellij IDEA构建开发环境