我想使用java
阅读远程目录的内容。
该目录位于运行Ubuntu的计算机上。右键单击该文件夹应该为共享提供共享文件夹选项及其安装的samba客户端,但我没有任何运行Windows的计算机。
我正在寻找 java api库来访问远程目录内容?
用户只会提供用户名,密码,IP和文件夹名称。
例如[//172.17.0.1/sharefolder/demo/]
感谢。
答案 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。