所有,原谅我对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
中获取任何文件;
所以我尝试像在 Windows 中那样在 Linux 的文件资源管理器中键入路径 \\10.50.90.18
。从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 挂载远程文件系统(通常包括 SMB/CIFS)和 samba .这可能看起来像(假设你有一个挂载点 /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://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]]][?param=value[param2=value2[...]]]
它还指出,所有代表工作组、服务器、共享或目录的 SMB URL 都需要尾部斜杠“/”。
关于java - 在 java 中访问网络共享文件夹(位于 Windows 或 Linux 中)的推荐方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496635/