我想使用 读取远程目录的内容java
。
该目录位于运行 Ubuntu 的机器上。右键单击该文件夹应该会提供共享文件夹选项及其安装的 samba 客户端以用于 Windows 共享,但我没有任何运行 Windows 的机器。
我正在寻找一个java api 库来访问远程目录内容?
用户将只提供用户名、密码、ip 和文件夹名称。
例如[//172.17.0.1/sharefolder/demo/]
谢谢。
我想使用 读取远程目录的内容java
。
该目录位于运行 Ubuntu 的机器上。右键单击该文件夹应该会提供共享文件夹选项及其安装的 samba 客户端以用于 Windows 共享,但我没有任何运行 Windows 的机器。
我正在寻找一个java api 库来访问远程目录内容?
用户将只提供用户名、密码、ip 和文件夹名称。
例如[//172.17.0.1/sharefolder/demo/]
谢谢。
对于 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。看:
如果是其他类型请注明
您可能会发现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 );
}
对于 SFTP,请考虑使用 JSCAPE 的Secure FTP Factory。可以在此处找到带有代码示例的文档。
jsch-nio是一个基于 ssh 的功能齐全的 unix/linux java FileSystemProvider。