提问人:aleksandr1994 提问时间:10/26/2023 更新时间:10/26/2023 访问量:41
SMB2FileId{persistentHandle=28 1e 03 b7 00 00 00 00}
SMB2FileId{persistentHandle=28 1e 03 b7 00 00 00 00}
问:
我使用一种方法,尝试通过 samba 获取文件目录中的文件列表并计算磁盘上的文件数量。磁盘已满 5 TB。因此,错误出现在 diskShare.list(PATH) “com.hierynomus.smbj.common.SMBRuntimeException: com.hierynomus.protocol.transport.TransportException: java.util.concurrent.ExecutionException: com.hierynomus.smbj.common.SMBRuntimeException: java.util.concurrent.TimeoutException: Timeout expired”
我使用 build.gradle 实现“com.hierynomus:smbj:0.12.2”。
@Slf4j
@Service
public class SambaServiceImpl implements SambaService {
@Value("${samba.servername}")
private String SERVERNAME;
@Value("${samba.username}")
private String USERNAME;
@Value("${samba.password}")
private String PASSWORD;
@Value("${samba.domain}")
private String DOMAIN;
@Value("${samba.share}")
private String SHARE;
@Value("${samba.path}")
private String PATH;
public ResponseEntity<String> getConnectionTest() {
try (SMBClient client = new SMBClient();) {
AuthenticationContext auth = new AuthenticationContext(USERNAME,
PASSWORD.toCharArray(), DOMAIN);
try (Session session = client.connect(SERVERNAME).authenticate(auth)) {
try (DiskShare diskShare = (DiskShare) session.connectShare(SHARE)) {
List<FileIdBothDirectoryInformation> files = diskShare.list(PATH);
return new ResponseEntity<>("Size: " + files.toString(), HttpStatus.OK);
}
}
} catch (IOException e) {
log.error(e.getMessage(), e);
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
}
}
我试图增加任何超时:
try (SMBClient client = new SMBClient(SmbConfig.builder().withReadTimeout(1000000000,
TimeUnit.SECONDS).build())) {..}
但错误是一样的。
请告诉我在这种情况下如何?磁盘上有很多文件,如何输出所有内容? 我可以按名称选择一个文件,但这还不够
FileInformation file =
diskShare.getFileInformation(PATH + "53039.pdf");
答: 暂无答案
评论