尝试列出共享文件夹中的所有文件时连接重置
Connection Reset when attempting to list all files from a Sharefolder
我正在尝试使用 SmbFile
和 NtlmPasswordAuthentication
递归检查公司共享文件夹中的特定文件。
因为我对 Java 不是很了解,所以我按照在互联网上找到的示例进行操作,但是每当我尝试执行 root.listFiles()
时,我总是会收到以下错误:
jcifs.smb.SmbException: Failed to connect: foldername/xx.xx.xx.xxx
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset
我确实有共享文件夹的访问权限,所以我最初的想法是我的代码中缺少某些东西,而是身份验证或代理错误。我正在使用以下格式的 url: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;
}
正如 Eliad Cohen 所建议的,由于 jcifs 中的 SMBv2 不兼容,您可能不得不更改为 SMBJ。
我发现了一个类似的问题,可能会帮助您解决这个问题。
请记住,主机就是您的路径!
编码愉快!
我正在尝试使用 SmbFile
和 NtlmPasswordAuthentication
递归检查公司共享文件夹中的特定文件。
因为我对 Java 不是很了解,所以我按照在互联网上找到的示例进行操作,但是每当我尝试执行 root.listFiles()
时,我总是会收到以下错误:
jcifs.smb.SmbException: Failed to connect: foldername/xx.xx.xx.xxx
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset
我确实有共享文件夹的访问权限,所以我最初的想法是我的代码中缺少某些东西,而是身份验证或代理错误。我正在使用以下格式的 url: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;
}
正如 Eliad Cohen 所建议的,由于 jcifs 中的 SMBv2 不兼容,您可能不得不更改为 SMBJ。
我发现了一个类似的问题
请记住,主机就是您的路径!
编码愉快!