SMB2FileId{persistentHandle=28 1e 03 b7 00 00 00 00}

SMB2FileId{persistentHandle=28 1e 03 b7 00 00 00 00}

提问人:aleksandr1994 提问时间:10/26/2023 更新时间:10/26/2023 访问量:41

问:

我使用一种方法,尝试通过 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");
爪哇岛 春天 Gradle 桑巴舞

评论


答: 暂无答案