ANDROID:在 Java 中访问 CIFS 共享
Posted
技术标签:
【中文标题】ANDROID:在 Java 中访问 CIFS 共享【英文标题】:ANDROID: Accessing CIFS Shares in Java 【发布时间】:2011-06-21 19:27:12 【问题描述】:我正在编写我的第一个 android 应用程序,它或多或少会成为挂载点管理器。本地挂载和 NFS 挂载很容易,但我不确定如何处理 CIFS 共享。
理想情况下,选择主机后,会显示 CIFS 共享列表。至少,我应该能够输入 CIFS URI/共享字符串并挂载它(例如://192.168.1.100/mount_point)。我正在考虑 ESstrongs,您可以在其中选择一个主机,它会显示共享,然后您可以进一步探索。
我看到过 jCIFS(我认为这是 Astro 使用的),并且我看到过在 xda-developers 上提到 cifs.ko 模块。还有其他标准方法吗?关于如何使用 jCIFS 或 cifs.ko 并在一般情况下执行此操作的任何提示/建议?我宁愿不必获得 root 访问权限。
【问题讨论】:
很抱歉破坏了你的想法,但它已经完成了market.android.com/details?id=ws.plattner.cifsmanager 但是 cifsmanager 需要 root 权限(并且@EricCoutu 表示不希望获得 root 权限)。 【参考方案1】:Androider 同志,我过去研究过各种协议,这就是我发现的:
如果必须是 CIFS,那么我会推荐 jCIFS。正如您提到的,Astro 确实使用它,而 EStrons 也使用它。并且... lysesoft 的 AndSMB 也是如此。所以,我很确定这是“转到”标准方法。
如果您正在考虑仅支持 SMB,您可能对此感兴趣: http://java-source.net/open-source/network-clients/jftp
此外,对于其他协议,这是一个值得细读的好列表: http://java-source.net/open-source/network-clients
希望对您有所帮助。
【讨论】:
【参考方案2】:由于 Android 是 Linux,您可以使用内核驱动程序,但加载这些驱动程序需要 root,或者您可以使用 FUSE,据说自 Gingerbread 以来就支持它(我自己还没有尝试过),或者确实您可以使用 JCIFS 之类的 Java 库
【讨论】:
【参考方案3】:快速的 Wireshark 捕获显示 EStrons 也使用 jCIFS,所以这也是我的建议。 jCIFS 被编写为 CIFS 客户端工具包,因此它应该能够适应您的项目目标。它本身不会“挂载”远程文件系统,但可以让您访问文件、目录、共享列表等。如何呈现这些信息取决于您。
另一个资源是Implementing CIFS,这是一本关于 SMB/CIFS 协议套件内部结构的在线书籍。特别是看一下Appendix D,它涵盖了 SMB URL 格式。 SMB URL 优于原始帖子(上图)中使用的模拟 UNC 格式。
【讨论】:
以上是关于ANDROID:在 Java 中访问 CIFS 共享的主要内容,如果未能解决你的问题,请参考以下文章