Java使用smbj访问带有用户密码的共享文件夹

最近有一个需求,需要访问内网环境下的window共享文件夹,但是需要用户密码登录。查了下,网络上很多人都是使用 https://www.jcifs.org/ 这个进行访问,但是这个方式在2018年的时候已经在官网下架了。好在还有其他的开源jar包可以使用,在此记录一下。

本实例使用smbj进行开发,官网如下 https://www.javadoc.io/doc/com.hierynomus/smbj/latest/index.html

github地址:https://github.com/hierynomus/smbj

maven引用:

<dependency>
  <groupId>com.hierynomus</groupId>
  <artifactId>smbj</artifactId>
  <version>0.11.3</version>
</dependency>

本实例要访问的网络地址是:\192.168.2.3\temp\临时数据\共享目录

package me.wb;

import com.hierynomus.msfscc.fileinformation.FileIdBothDirectoryInformation;
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.SmbConfig;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
import com.hierynomus.smbj.session.Session;
import com.hierynomus.smbj.share.DiskShare;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class Tests {


    public static void main(String[] args) throws IOException {
        SMBClient client = new SMBClient();

        try (Connection connection = client.connect("192.168.2.3")) {
            AuthenticationContext ac = new AuthenticationContext("user", "password".toCharArray(), "");
            Session session = connection.authenticate(ac);

            // Connect to Share
            // \\192.168.2.3\temp\临时数据\共享目录    对应“temp”
            try (DiskShare share = (DiskShare) session.connectShare("temp")) {
                 // \\192.168.2.3\temp\临时数据\共享目录    对应“\临时数据\共享目录”
                for (FileIdBothDirectoryInformation f : share.list("\\临时数据\\共享目录", "*.csv")) {
                    System.out.println("File : " + f.getFileName());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


以上完成连接共享目录的代码。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容