我正在尝试使用 SMBJ jar (https://github.com/hierynomus/smbj https://github.com/hierynomus/smbj) 从共享驱动器中获取文件。我能够连接到共享磁盘。连接后,我执行的任何操作都会引发异常。
对于我的共享驱动器位置://x.x.x.x/containing/folder/filename.txt,我使用的参数如下:
//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";
}
我收到如下异常。我认为我没有获得正确的参数组合。
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)
我无法弄清楚这里出了什么问题。你能建议我在这里缺少什么吗?