【发布时间】:2013-01-13 16:34:29
【问题描述】:
jCIFS 是一个很棒的库,用于连接到 Android 上的 SMB 共享,它几乎适用于我测试过的所有设置。
但是,在基于 Windows 的网络共享上使用 SmbFile.listFiles() 方法时,我确实会遇到非常慢的性能,但仅限于在 PC 上以实际用户身份登录时。简单地获取文件夹列表可能需要几分钟时间,有时根本没有任何反应。
如果我选择以访客身份登录(使用“访客”作为用户,密码为空),一切都会很快。通常不到一秒钟。
以下代码可以运行,而且速度很快:
try {
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", "guest", ""); // domain, user, password
currentFolder = new SmbFile("smb://host-name-for-my-pc", authentication);
SmbFile[] listFiles = currentFolder.listFiles();
} catch (Exception e) { // Using Exception for the sake of demonstration...
但是,此代码不起作用/非常慢:
try {
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", "my-username", "my-password"); // domain, user, password
currentFolder = new SmbFile("smb://host-name-for-my-pc", authentication);
SmbFile[] listFiles = currentFolder.listFiles();
} catch (Exception e) { // Using Exception for the sake of demonstration...
我与另一个正在使用 jCIFS 的人交谈,他遇到了同样的问题。
我尝试使用 ES 文件资源管理器连接到同一个共享,它也使用 jCIFS,无论使用真实帐户还是以访客身份登录都很快。
更新:
如果我改用SmbFile("username:password@server/"),它可以工作!不过,我真的希望它与NtlmPasswordAuthentication 一起工作。有什么想法吗?
【问题讨论】: