我想使用java
来读取远程目录的内容。在java中使用ssh读取远程Ubuntu目录?
该目录位于运行Ubuntu的计算机上。右键点击该文件夹应该给共享文件夹选项和其安装的samba客户端的Windows共享,但我没有任何运行Windows的机器。
我在寻找一个java api库来访问远程目录的内容吗?
用户将只提供用户名,密码,IP和文件夹名称。
如[//172.17.0.1/sharefolder/demo/]
感谢。
我想使用java
来读取远程目录的内容。在java中使用ssh读取远程Ubuntu目录?
该目录位于运行Ubuntu的计算机上。右键点击该文件夹应该给共享文件夹选项和其安装的samba客户端的Windows共享,但我没有任何运行Windows的机器。
我在寻找一个java api库来访问远程目录的内容吗?
用户将只提供用户名,密码,IP和文件夹名称。
如[//172.17.0.1/sharefolder/demo/]
感谢。
您可能会发现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);
}
即使整个群集只是Ubuntu机器,JCIFS lib是否允许读取目录内容?其次,我们可以使用ssh在java中执行相同的过程吗? – 2013-04-08 11:05:56
看来你想要一个基于sftp的API而不是SMB/CIFS。您应该编辑该问题以相应地反映该问题。无论如何,希望Menelaos会帮助你的答案。祝你好运! – Ahmed 2013-04-08 17:27:10
对于Samba共享: 即使Samba共享在linux使用相同的协议作为Windows共享文件。 因此,这里的帖子可以帮助:How can I mount a windows drive in Java? 基本上,您可以使用“net use”命令将共享位置挂载为网络驱动器。 你可以通过Windows控制台或java Process调用它。
对于SFTP位置:
如果没有与呼叫/使用外部命令可以使用sshfs的(任一出的java或通过处理)来挂载远程目录成一个问题本地文件夹。
参见:http://numberformat.wordpress.com/2010/03/01/how-to-mount-a-remote-ssh-filesystem-using-sshfs/
如果你想如何访问SFTP纯java,我读了一个名为JSch库可用于直接从Java访问SFTP。请参阅:
如果它是另一种类型的请注明
感谢您的有用链接。但我正在寻找基于JAVA的API来传递用户和系统信息,然后访问该目录而无需安装。我创建了几个APi,如sshj,JCFS等,但他们都使用安全FTP [获取或放置]文件。 – 2013-04-08 11:47:36
嗨,谢谢!问题,您使用的协议是SFTP,Samba还是其他协议? – 2013-04-08 11:49:46
SFTP,我们可以遍历所有的文件和文件夹吗?检查,不管它是否是目录? – 2013-04-08 12:54:25
对于SFTP考虑使用JSCAPE的Secure FTP Factory。带代码示例的文档可以在here找到。
我想在这里需要指定它是否用于标题和问题主体中的SFTP或SAMBA。 – 2013-04-08 21:19:08