1

我想使用 读取远程目录的内容java

该目录位于运行 Ubuntu 的机器上。右键单击该文件夹应该会提供共享文件夹选项及其安装的 samba 客户端以用于 Windows 共享,但我没有任何运行 Windows 的机器。

我正在寻找一个java api 库来访问远程目录内容?

用户将只提供用户名、密码、ip 和文件夹名称。

例如[//172.17.0.1/sharefolder/demo/]

谢谢。

4

4 回答 4

1

对于 Samba 共享: 即使是 linux 中的 SAMBA 共享也使用与 Windows 共享相同的协议。所以这里的帖子可以提供帮助:如何在 Java 中安装 Windows 驱动器? 基本上,您可以使用“net use”命令将共享位置安装为网络驱动器。您可以通过 Windows 控制台或通过 Java 进程调用它。

对于 SFTP 位置:

如果调用/使用外部命令没有问题,则可以使用 sshfs(通过 java 或通过 Process)将远程目录挂载到本地文件夹中。

请参阅: http: //numberformat.wordpress.com/2010/03/01/how-to-mount-a-remote-ssh-filesystem-using-sshfs/

如果您想要纯 java 来了解如何访问 SFTP,我读到一个名为 JSch 的库可用于直接从 java 访问 SFTP。看:

如果是其他类型请注明

于 2013-04-08T11:40:01.810 回答
0

您可能会发现Java CIFS 客户端库具有您需要的 API - 它对服务器和客户端都很有用。

这是从他们的文档中获取的用于检索文件的示例:

import jcifs.smb.*;

jcifs.Config.setProperty( "jcifs.netbios.wins", "192.168.1.220" );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain", "username", "password");
SmbFileInputStream in = new SmbFileInputStream("smb://host/c/My Documents/somefile.txt", auth);
byte[] b = new byte[8192];
int n;
while(( n = in.read( b )) > 0 ) {
    System.out.write( b, 0, n );
}
于 2013-04-08T10:46:18.880 回答
0

对于 SFTP,请考虑使用 JSCAPE 的Secure FTP Factory。可以在此处找到带有代码示例的文档。

于 2013-04-17T01:26:12.020 回答
0

jsch-nio是一个基于 ssh 的功能齐全的 unix/linux java FileSystemProvider。

于 2018-07-30T09:21:28.530 回答