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 File Explorer 连接到同一个共享,它也使用 jCIFS,无论使用真实帐户还是以访客身份登录,它都很快。
更新:
如果我改用SmbFile("username:password@server/")
它,它会起作用!不过,我真的希望它与NtlmPasswordAuthentication
. 有任何想法吗?