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

标签 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 中获取任何文件;

所以我尝试像在 Windows 中那样在 Linux 的文件资源管理器中键入路径 \\10.50.90.18。从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 挂载远程文件系统(通常包括 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/

相关文章:

Java符号查找错误:/usr/lib64/jvm/java-11-openjdk-11/lib/libnio.所以: undefined symbol :initInetAddressIDs

apache - 如何在 Apache 2.2.9 中使用 mod_ssl 将 openssl 0.9.8 升级到 1.0.2

linux - 使用脚本在系统启动时自动启动程序(linux、shell)

java - 无法通过互联网访问本地托管的项目?

linux - 是否有用于在 Linux 上搜索 msword 文档文件的模块?

linux - 在 linux 中为所有 x86 机器创建通用二进制文件

php - 如何将今天的日期添加到 .htaccess 日志文件名

java - 杂交 : language model not found

java - Apache POI HSSF : How to add shape which would not resize along with corresponding cell?

java - 根据下一个单词在一行中找到一个单词