在java中使用ssh读取远程Ubuntu目录?

时间:2013-04-08 10:42:39

标签: java file-io ssh remote-access smb

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

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

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

用户只会提供用户名,密码,IP和文件夹名称。

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

感谢。

4 个答案:

答案 0 :(得分:1)

对于Samba分享: 即使SAMBA中的SAMBA共享也使用与windows共享相同的协议。 所以这里的帖子可以提供帮助:How can I mount a windows drive in Java? 基本上,您可以使用“net use”命令将共享位置挂载为网络驱动器。 您可以通过Windows控制台或通过Java Process调用它。

对于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。见:

如果是其他类型,请指定

答案 1 :(得分:0)

您可能会发现The Java CIFS Client Library拥有您需要的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 );
}

答案 2 :(得分:0)

对于SFTP,请考虑使用JSCAPE的Secure FTP Factory。可以找到包含代码示例的文档here

答案 3 :(得分:0)

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

相关问题