ANDROID:使用Java访问CIFS共享

时间:2011-02-05 08:29:21

标签: java android smb cifs

我正在编写我的第一个Android应用程序,它或多或少将成为一个挂载点管理器。本地安装和NFS挂载很容易,但我不确定如何使用CIFS共享。

理想情况下,选择主机后,将显示CIFS共享列表。至少,我应该能够输入CIFS URI /共享字符串并挂载它(例如://192.168.1.100/mount_point)。我在想EStrongs,你可以在那里选择一个主机,它会显示共享,然后你可以进一步探索。

我见过jCIFS(我认为这是Astro使用的),我在xda-developers上看到了cifs.ko模块的提及。还有其他标准方法吗?关于如何使用jCIFS或cifs.ko并一般地执行此操作的任何提示/建议?我宁愿不必获得root权限。

3 个答案:

答案 0 :(得分:4)

Androider在这里,我已经研究了过去的各种协议,这就是我发现的:

如果必须是CIFS,那么我会推荐jCIFS。正如你所提到的,Astro确实使用它,而EStrongs也是如此。并且...... lysesoft的AndSMB也是如此。所以,我很确定这是'去'标准方法。

如果您只关注支持SMB,您可能会对此感兴趣: http://java-source.net/open-source/network-clients/jftp

此外,对于其他协议,这是一个很好的清单: http://java-source.net/open-source/network-clients

希望有所帮助。

答案 1 :(得分:2)

因为Android是Linux,你可以使用内核驱动程序,但加载那些需要root,或者你可以使用 FUSE ,这可能是自Gingerbread(自己没有尝试过)以来支持的,或者确实是您可以使用像JCIFS这样的Java库

答案 2 :(得分:2)

快速的Wireshark捕获显示EStrongs也使用jCIFS,因此这也是我的建议。 jCIFS被编写为CIFS客户端工具包,因此它应该适应您的项目目标。它本身不会“挂载”远程文件系统,但可以访问文件,目录,共享列表等。您如何呈现该信息取决于您。

另一个资源是Implementing CIFS,这是一本关于SMB / CIFS协议套件内部的在线书籍。特别是,请查看涵盖SMB URL格式的Appendix D。 SMB URL优先于原始帖子中使用的模拟UNC格式(上图)。