CIFS链接以及常见操作
先科普一下,
SMB也就是CIFS,链接Smb操作如下:
//远程ipString ip = "123.24.42";String domain = "mydomain";String username = "pascal";String password = "123456";String directory = "smb://123.24.42/test/a.txt";System.setProperty("jcifs.smb.client.dfs.disabled", "true");UniAddress dc = UniAddress.getByName(ip);NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication(domain, username, password);SmbSession.logon(dc, authentication);SmbFile file = new SmbFile(directory, authentication);
链接成功之后,可以进行和java.io.File中的很多操作,和File很类似,只不过换成了SmbFile取处理,比如
if (!file.exists()) {log.info("not.exists.file.source.directory,directory.is:" + directory);}log.info("SmbFile.isDirectory:" + file.isDirectory());if (file.isDirectory()) {}
亲自链接并且进行操作之后,发现smb很慢,又看到了支持smb2协议和smb3协议的smbj,遂又研究了一下smbj的链接操作,如下:
//获取相关配置数据String domain = fileConfig.getDomain();String username = fileConfig.getUsername();String password = fileConfig.getPassword();String ip = fileConfig.getIp();String source = fileConfig.getSource();String folder = fileConfig.getFolder();String directory = source + folder + "/";String targetDir = fileConfig.getTarget();log.info("file.source.directory.is:" + directory);// 设置超时时间(可选)SmbConfig config = SmbConfig.builder().withTimeout(120, TimeUnit.SECONDS).withTimeout(120, TimeUnit.SECONDS) // 超时设置读,写和Transact超时(默认为60秒).withSoTimeout(180, TimeUnit.SECONDS) // Socket超时(默认为0秒).build();// 如果不设置超时时间 SMBClient client = new SMBClient();SMBClient client = null;Connection connection = null;Session session = null;DiskShare share = null;client = new SMBClient(config);connection = client.connect(ip);AuthenticationContext ac = new AuthenticationContext(username, password.toCharArray(), domain);session = connection.authenticate(ac);// 连接共享文件夹share = (DiskShare) session.connectShare(source);boolean folderExists = false;log.info("share.list.size:" + share.list(directory).size());long e = System.currentTimeMillis();for (FileIdBothDirectoryInformation f : share.list(directory)) {if (share.fileExists(filePath)) {if (!folderExists) {return ResultMessage.newInstance(2, "No file directory was found for the project code.", "");}log.info("SMB2Service.create.end");return ResultMessage.newInstance(1, "", null);}}
相关参数配置如下:
com.smx.source=abc$
com.smx.ip=123.456.789
com.smx.domain=pascal
com.smx.username=pascal
com.smx.password=123456
com.smx.folder=my name/is pascal
这里要注意的是,list之后,下一步中的遍历的路径就是已经在share的文件夹下的,别写多了,不然找不到文件所在位置 ,还有链接share的时候,只到$之前就好了,后面的具体路径不要,这是一个shareName,然后等链接了之后,再具体加下级路径,还有最后要注意share,session,clientd的流的关闭.
CIFS链接以及常见操作相关推荐
- go语言笔记——切片函数常见操作,增删改查和搜索、排序
7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如 ...
- cmd输入pip报错_安装虚拟环境+pip安装XXX包的常见操作与报错解决
安装虚拟环境+pip安装XXX包的常见操作与报错解决blog.csdn.net 文章目录: 一.开始前提 二.安装虚拟环境的常见操作 三.pip 的命令的常见操作:安装.更新.卸载.指定源 四.安装 ...
- Oracle常见操作和命令
在 Oracle 中,下面哪个命令可以修改用户的默认密码有效期为无限制?(单选) A. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90: ORACL ...
- 49个Python的常见操作/技巧/例子
17个Python的常见操作/技巧 很多读者都知道 Python 是一种高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意. 实际上,很多人选择学习 Pytho ...
- 黑帽SEO的常见操作手法解析
黑帽SEO听起来蛮吓人的,但没这么复杂,就是针对普通SEO而言的,也就是人们常说的白帽SEO. 黑帽SEO的操作手法可能对刚接触SEO或一直从事白帽SEO的朋友来讲有些陌生甚至还有些抵触,然而也是有很 ...
- SpeedMent入门集成SpringBootStream常见操作
当您熟悉 Streams 的操作时,您可能已经注意到与 SQL 构造的相似之处. 它们中的一些或多或少直接映射到 Stream 操作,例如 LIMIT 和 COUNT.开源项目 Speedment 利 ...
- 关于黑帽SEO的16种常见操作手法解析
黑帽SEO的操作手法可能对刚接触SEO或一直从事白帽SEO的朋友来讲有些陌生甚至是抵触,然而还是有很多人愿意冒着Google沙盒.百度沙盒,甚至被K站的风险去使用黑帽SEO,这是因为黑帽SEO能够短期 ...
- Ubunto 常见操作
Ubunto 常见操作 一.数据库操作 1.1 安装mysql 1.2 grant all privileges on *.* to 报错问题 1.3 安装python 1.4 查看mysql密码策略 ...
- C的几个小程序和概念(常见操作)(中)
C的几个小程序和概念(常见操作)(中) 1.求和计数 (1)常见的有三种方法:累乘,累加,递推迭代法. (2)求Pi/4=1-1/3+1/5-1/7+... 正负交叉项数列.用一个符号变量来实现. a ...
最新文章
- k8s之CRD定义map[string]interface{}类型
- Composer报错Could not find a matching version of package解决方式
- python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...
- C++之return的作用域
- 解决vs code下powerline10k图形渲染异常
- Hive安装与配置详解
- python数据分析——pyecharts地图全解
- MySQL中幻读是如何解决的
- mongodb 基本操作:文档查询
- Go语言核心之美 3.4-Struct结构体
- bootloader学习笔记---第一篇以stm32为例
- javascript中的window.onload解释
- 重磅!新职业技能证书来了,让你高薪就业
- 【论文翻译】(UAI 2018)使用感知预测网络进行潜在物理属性的无监督学习
- docker部署smokeping监控网络掉包
- 基于web的IT技术论坛
- Pausing and Resuming an Activity 暂停和恢复活动
- java解析多层json数据
- Ubuntu 16.04 LTS 一键安装NVIDIA显卡驱动
- 读书笔记---被讨厌的勇气
热门文章
- Springboot多数据源+Jpa配置
- 北京信息科技大学计算机学院官网,北京信息科技大学通信学院网站
- db2 随机数函数_db2产生随机数
- 机器学习(三):基于LightGBM的分类预测
- 希捷银河企业级硬盘,智能高效首选 1
- 打造网络营销利器-第2篇--友情链接交换-网站优化进阶
- NOIP 2020 T1 排水系统(拓扑排序)
- java 获取假期时间_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
- java中的isEmpty方法,以及与引号区别
- 一篇通俗易懂的ADT介绍