在java

时间:2015-05-28 03:19:24

标签: java linux suse

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

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

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

但是当我将我的应用程序部署到Linux系统并运行它时。它只是告诉我无法从指定的networkShareFolder;

获取任何文件

所以我尝试在Linux的File explorer中输入路径\\10.50.90.18,就像我在windows中所做的那样。查看是否可以从Linux系统访问该路径。但它只是告诉我Can't locate the \\10.50.90.18。但我确信IP可以从Linux ping。

所以我的问题是

  1. 为什么在Linux中无法访问\\10.50.90.18。但是可以在Windows中访问。 (我相信他们的IP都是10.50.90。*)
  2. 从Windows或Linux访问网络共享文件夹的最佳方法是什么?
  3. 感谢。

1 个答案:

答案 0 :(得分:12)

使用FUSE进行远程安装

可以使用FUSEsamba安装远程文件系统(通常包括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,并提供listFiles()允许类似

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

SmbFile的关联文档确实提供了完整格式

  

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

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