我正在尝试将测试文件(在我的Android应用中)写入Windows 2008服务器上的SMB共享。如果我尝试写入的路径包含一个子文件夹名称(例如“ smb://192.168.1.25/D/mysubfolder”,其中D是远程计算机D驱动器的共享名称),则该操作有效精细。但是,如果未指定子文件夹名称,则在尝试将文件写入共享时会收到UnknownHostException。 因此,对于以下两个路径,我都会收到UnknownHostException:
smb://192.168.1.25/D/
smb://192.168.1.25/myfoldershare(其中myfoldershare是D盘上子文件夹的共享名称)
以上所有共享名在主机上都配置了相同的权限(“所有人”的完全控制权限)。 为什么我总是得到UnknownHostException,除非我将子文件夹名称附加到路径上?
我尝试了SMB主机上各种权限选项,但现在对我要访问的所有共享都采用“完全控制”。 我尝试使用同一Android设备上的Solid Explorer应用程序写入相同的共享(使用相同的登录凭据)。写任何“问题”共享都没有问题。
String testPathRootDest = "smb://192.168.1.25/myfoldershare/";
try {
SmbFile newFolder = new SmbFile(testPathRootDest, testAuth);
if (!newFolder.canWrite()) {
return "NotWritable";
}
// Finally, try writing a test file
String testFilePath = testPathRootDest + "test.txt";
SmbFile testFile = new SmbFile(testFilePath, testAuth);
SmbFileOutputStream out = new SmbFileOutputStream(testFile);
String text = "File Upload Test";
out.write(text.getBytes());
out.flush();
out.close();
// Delete test file
testFile.delete();
} catch (IOException e) {
System.out.println(e.getMessage());
errorMessage = e.toString();
e.printStackTrace();
if (errorMessage.contains("UnknownHostException")) {
return "UnknownHostException";
} else {
return "IOException";
}
} catch (Exception e) {
System.out.println(e.getMessage());
errorMessage = e.toString();
e.printStackTrace();
return "IOException";
}
我希望“ new SmbFile”命令能够正确完成,但是如果我无法将文件夹名称附加到路径中,它将返回UnknownHostException