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



大家原谅我对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的文件资源管理器中输入路径\10.50.90.18,就像我在windows中做的那样。查看是否可以从Linux系统到达该路径。但它只告诉我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访问网络共享文件夹的最佳方式是什么?

谢谢。

带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提供SmbFilelistFiles(),允许类似

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

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

smb://[[[域;]的用户名(密码):@]服务器[:港口]/[[分享/[dir/]文件]]][?参数=价值[param2 = value2[…]]]

并且它还注意到所有表示工作组、服务器、共享或目录的SMB url都需要一个斜杠'/'。

相关内容

  • 没有找到相关文章

最新更新