先科普一下,

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链接以及常见操作相关推荐

  1. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  2. cmd输入pip报错_安装虚拟环境+pip安装XXX包的常见操作与报错解决

    安装虚拟环境+pip安装XXX包的常见操作与报错解决​blog.csdn.net 文章目录: 一.开始前提 二.安装虚拟环境的常见操作 三.pip 的命令的常见操作:安装.更新.卸载.指定源 四.安装 ...

  3. Oracle常见操作和命令

    在 Oracle 中,下面哪个命令可以修改用户的默认密码有效期为无限制?(单选) A. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90: ORACL ...

  4. 49个Python的常见操作/技巧/例子

    17个Python的常见操作/技巧 很多读者都知道 Python 是一种高级编程语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意. 实际上,很多人选择学习 Pytho ...

  5. 黑帽SEO的常见操作手法解析

    黑帽SEO听起来蛮吓人的,但没这么复杂,就是针对普通SEO而言的,也就是人们常说的白帽SEO. 黑帽SEO的操作手法可能对刚接触SEO或一直从事白帽SEO的朋友来讲有些陌生甚至还有些抵触,然而也是有很 ...

  6. SpeedMent入门集成SpringBootStream常见操作

    当您熟悉 Streams 的操作时,您可能已经注意到与 SQL 构造的相似之处. 它们中的一些或多或少直接映射到 Stream 操作,例如 LIMIT 和 COUNT.开源项目 Speedment 利 ...

  7. 关于黑帽SEO的16种常见操作手法解析

    黑帽SEO的操作手法可能对刚接触SEO或一直从事白帽SEO的朋友来讲有些陌生甚至是抵触,然而还是有很多人愿意冒着Google沙盒.百度沙盒,甚至被K站的风险去使用黑帽SEO,这是因为黑帽SEO能够短期 ...

  8. Ubunto 常见操作

    Ubunto 常见操作 一.数据库操作 1.1 安装mysql 1.2 grant all privileges on *.* to 报错问题 1.3 安装python 1.4 查看mysql密码策略 ...

  9. C的几个小程序和概念(常见操作)(中)

    C的几个小程序和概念(常见操作)(中) 1.求和计数 (1)常见的有三种方法:累乘,累加,递推迭代法. (2)求Pi/4=1-1/3+1/5-1/7+... 正负交叉项数列.用一个符号变量来实现. a ...

最新文章

  1. k8s之CRD定义map[string]interface{}类型
  2. Composer报错Could not find a matching version of package解决方式
  3. python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...
  4. C++之return的作用域
  5. 解决vs code下powerline10k图形渲染异常
  6. Hive安装与配置详解
  7. python数据分析——pyecharts地图全解
  8. MySQL中幻读是如何解决的
  9. mongodb 基本操作:文档查询
  10. Go语言核心之美 3.4-Struct结构体
  11. bootloader学习笔记---第一篇以stm32为例
  12. javascript中的window.onload解释
  13. 重磅!新职业技能证书来了,让你高薪就业
  14. 【论文翻译】(UAI 2018)使用感知预测网络进行潜在物理属性的无监督学习
  15. docker部署smokeping监控网络掉包
  16. 基于web的IT技术论坛
  17. Pausing and Resuming an Activity 暂停和恢复活动
  18. java解析多层json数据
  19. Ubuntu 16.04 LTS 一键安装NVIDIA显卡驱动
  20. 读书笔记---被讨厌的勇气

热门文章

  1. Springboot多数据源+Jpa配置
  2. 北京信息科技大学计算机学院官网,北京信息科技大学通信学院网站
  3. db2 随机数函数_db2产生随机数
  4. 机器学习(三):基于LightGBM的分类预测
  5. 希捷银河企业级硬盘,智能高效首选 1
  6. 打造网络营销利器-第2篇--友情链接交换-网站优化进阶
  7. NOIP 2020 T1 排水系统(拓扑排序)
  8. java 获取假期时间_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
  9. java中的isEmpty方法,以及与引号区别
  10. 一篇通俗易懂的ADT介绍