6

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. 有任何想法吗?

4

4 回答 4

6

使用new SmbFile("username:password@server/")作品,所以我只是使用它。

于 2013-02-11T17:09:51.763 回答
2

在实例化任何 jCIFS 类之前尝试使用以下代码:

jcifs.Config.setProperty("resolveOrder", "DNS");

感谢Glenn在 JCIFS 中的回答 :文件检索太慢而无法使用

参考: https ://jcifs.samba.org/src/docs/api/overview-summary.html

于 2015-09-16T06:56:49.500 回答
1

尝试使用new SmbFile("smb://host-name-for-my-pc/", authentication);. 以斜线结尾。

于 2013-02-17T19:01:31.930 回答
0

我在图书馆遇到了同样的问题。我可以看到解决问题的所有答案都没有域属性,我尝试不使用该属性并且我看到问题已解决,我认为该库默认用于 LAN,但如果您明确放置域执行很慢。

关于密码,我认为登录共享文件夹较慢是正常的。

于 2020-03-13T15:07:22.783 回答