我想访问其他服务器上的共享文件。例如:我的机器IP是10.10.10.1,另一台机器IP是10.10.10.2,用户:user,密码:pass。上面有一个共享目录是share,share里面有一个test.txt文件,我想通过我的机器访问这个test.txt,我觉得应该用uri类,不知道表达式怎么写,请各位指点,请贴出简单代码,或者有其他解决方案。多谢
我想访问其他服务器上的共享文件。例如:我的机器IP是10.10.10.1,另一台机器IP是10.10.10.2,用户:user,密码:pass。上面有一个共享目录是share,share里面有一个test.txt文件,我想通过我的机器访问这个test.txt,我觉得应该用uri类,不知道表达式怎么写,请各位指点,请贴出简单代码,或者有其他解决方案。多谢
楼主可能不希望这样
比如:file:////10.10.10.2/share/test.txt
但是用户名和密码加在表达式的哪里,又没有相关的教程和文档,请指点。
import java.net.UnknownHostException;import jcifs.UniAddress;
import jcifs.smb.*;public class SharedAccess
{ /**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub try
{
UniAddress dc = UniAddress.getByName("10.xx.xx.xx");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( "username:password");//这里改成你自己的,username和password中间要有:
SmbSession.logon(dc, auth);
System.out.println("logon succeed");//这里如果打印出来了就说明已经可以直接访问了(不用再输用户名和密码) File dir = new File("\\\\10.xx.xx.xx\\d$\\ptc");//这里我只列出目录下包含的内容, 你要做什么就看你的了.
String[] files = dir.list();
for (int i = 0; i < files.length; i++)
{
System.out.println(files[i]);
}
} catch (SmbException smbExp)
{
System.err.println(smbExp.getMessage());
} catch (UnknownHostException UHExp)
{
;
} }}我已在我的机器上测试通过.我的环境是xp + jdk1.5, 另一台机器装的是windows2003.我用的编译器是eclipse 3.1
import jcifs.smb.*;public class SharedAccess
{ /**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub try
{
SmbFile dir = new SmbFile( "smb://username:[email protected]/my/");//我用的都是administrator登录,my是共享目录的名称.
String[] files = dir.list();
for (int i = 0; i < files.length; i++)
{
System.out.println(files[i]);
}
} catch (Exception exp)
{
System.err.println(exp.getMessage());
} }
}有一次在一台机器上运行时, 发现没有输出, 也不报错, 后来才想起来被访问的机器有防火墙, 其它网段的IP不能访问这台机器.然后把防火墙关了, 结果OK. 我这环境比较复杂, 不过遇到的情况可以供大家借鉴.