首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在共享驱动器上使用java和smbj读取文件

无法在共享驱动器上使用java和smbj读取文件
EN

Stack Overflow用户
提问于 2017-12-04 20:13:00
回答 0查看 8.5K关注 0票数 2

我正在尝试使用SMBJ jar (https://github.com/hierynomus/smbj)从共享驱动器获取文件。我可以连接到共享磁盘。在连接之后,我执行的任何操作都会抛出异常。

对于我的共享驱动器位置://x.x/containing/folder/filename.txt,我使用的参数如下:

代码语言:javascript
复制
//SERVER_ADDRESS = x.x.x.x
//SHARE_NAME = /containing/folder/
//FILE_NAME = filename.txt
//LOCAL_PATH = "D:\\";

    SMBClient client = new SMBClient();
    try (Connection connection = client.connect(SERVER_ADDRESS)) {
        AuthenticationContext ac = new AuthenticationContext(USERNAME, PASSWORD.toCharArray(), DOMAIN);
        Session session = connection.authenticate(ac);
        // Connect to Share
        try (DiskShare share = (DiskShare) session.connectShare(SHARE_NAME)) {
            Set<SMB2ShareAccess> s = new HashSet<>();
            s.add(SMB2ShareAccess.ALL.iterator().next()); // this is to get READ only
            com.hierynomus.smbj.share.File remoteSmbjFile =  share.openFile(SHARE_NAME+FILE_NAME, EnumSet.of(AccessMask.GENERIC_READ), null, s, null, null);
            java.io.File dest = new java.io.File(LOCAL_PATH + FILE_NAME);
            try (InputStream is = remoteSmbjFile.getInputStream();
                    OutputStream os = new FileOutputStream(dest);) {
                byte[] buffer = new byte[1024];
                int length;
                while ((length = is.read(buffer)) > 0) {
                    os.write(buffer, 0, length);
                }
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
        LOGGER.error("", e);
        return "ERROR";
    } catch (Exception e) {
        e.printStackTrace();
        LOGGER.error("", e);
        return "ERROR";
    }

我得到的异常如下。我想我没有得到正确的参数组合。

代码语言:javascript
复制
com.hierynomus.mssmb2.SMBApiException: STATUS_INVALID_PARAMETER(3221225485/3221225485): Create failed for \containing\folder\
    at com.hierynomus.smbj.share.Share.receive(Share.java:364)
    at com.hierynomus.smbj.share.Share.sendReceive(Share.java:344)
    at com.hierynomus.smbj.share.Share.createFile(Share.java:136)
    at com.hierynomus.smbj.share.DiskShare.open(DiskShare.java:59)
    at com.hierynomus.smbj.share.DiskShare.openDirectory(DiskShare.java:82)
    at com.hierynomus.smbj.share.DiskShare.list(DiskShare.java:169)
    at com.hierynomus.smbj.share.DiskShare.list(DiskShare.java:151)

我不知道这里出了什么问题。你能建议我这里遗漏了什么吗?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47633119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档