我正在尝试使用SmbFile
和NtlmPasswordAuthentication
递归检查公司共享文件夹中的特定文件。
由于我不太了解Java,因此我遵循了Internet上的示例,但是每当尝试执行root.listFiles()
时,都会不断出现以下错误:
jcifs.smb.SmbException: Failed to connect: foldername/xx.xx.xx.xxx
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset
我确实具有对共享文件夹的访问权限,所以我最初的想法是我的代码中缺少某些内容,而是出现了身份验证或代理错误。我正在使用以下格式的网址:smb://foldername/something/somethingelse/anothersomething/
我的代码:
public static Boolean checkDiretory(String location, String docName){
Boolean result = false;
try {
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", Consts.username, Consts.password);
SmbFile root = new SmbFile(location, auth);
List<SmbFile> files = Arrays.asList(root.listFiles());
for(SmbFile file : files){
if(file.isDirectory()){
result = checkDiretory(file.getPath(), docName);
if(result)
return result;
}
else{
if(file.exists() && file.getName().contains(docName)){
return true;
}else{
result = false;
}
}
}
} catch (SmbException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return result;
}