大家原谅我对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。
所以我的问题是
- 为什么
\10.50.90.18
在Linux下无法访问,而在Windows下可以访问。(我确定他们的IP都是10.50.90 *) - 从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
和listFiles()
,允许类似
SmbFile[] files = new SmbFile("smb://10.50.90.18/ITS Tool/xml/").listFiles();
SmbFile
的链接文档给出了完整的格式
smb://[[[域;]的用户名(密码):@]服务器[:港口]/[[分享/[dir/]文件]]][?参数=价值[param2 = value2[…]]]
并且它还注意到所有表示工作组、服务器、共享或目录的SMB url都需要一个斜杠'/'。