在java中访问networking共享文件夹(位于Windows或Linux)的推荐方式是什么?

所有,原谅我我不熟悉Linux。 我正在尝试读取位于Windows或Linux系统的networking共享文件夹的所有文件。

目前我只是通过下面的代码使它适用于Windows的情况。

networkShareFolder="\\\\10.50.90.18\\ITS Tool\\xml\\";//It is a windows Network share path. File[] files = new File(networkShareFolder).listFiles(); 

但是,当我将我的应用程序部署到Linux系统并运行它。 它只是告诉我不能从指定的networkingnetworkShareFolder获取任何文件;

所以我试图在Linux的文件浏览器中键入path\\10.50.90.18就像我在窗口中所做的一样。 查看是否可以从Linux系统访问path。 但它只是告诉我Can't locate the \\10.50.90.18 。 但我确定IP可以从Linux进行ping。

所以我的问题是

  1. 为什么\\10.50.90.18不能在Linux中访问,但可以在Windows中访问。 (我确定他们的IP都是10.50.90。*)
  2. 从Windows或Linux访问networking共享文件夹的最佳方式是什么?

谢谢。

Solutions Collecting From Web of "在java中访问networking共享文件夹(位于Windows或Linux)的推荐方式是什么?"

用FUSE远程安装

使用FUSE和samba挂载远程文件系统(通常包括SMB / CIFS)是可能的。 这可能看起来像(假设你有一个挂载点/windows

 # export USER=efrisch # export WORKGRP=mygrp # smbmount //10.50.90.18/ /windows –o username=$USER,workgroup=$WORKGRP 

然后你可以访问你的目录(透明地)

 new File("/windows/ITS Tool/xml") 

纯Java解决方案(使用JCIFS)

JCIFS提供SmbFile并提供SmbFile listFiles()允许类似的东西

 SmbFile[] files = new SmbFile("smb://10.50.90.18/ITS Tool/xml/").listFiles(); 

SmbFile的链接文档确实给出了完整的格式

SMB://?[[[域]用户名[:密码] @]服务器[:端口] / [[份额/ [DIR /]文件]]] [PARAM =值[参数2 = 2 […]] ]

并且还指出, 代表工作组,服务器,共享或目录的所有SMB URL都需要一个斜杠“/”。