您的位置:首页 > 编程语言 > Java开发

java远程共享文件访问jcifs解决密码中特殊符号问题

2013-06-20 18:52 826 查看
注意,先通过NtlmPasswordAuthentication进行验证,验证通过后用SmbFile 加入即可解决jcifs密码中的特殊符号问题

public void smbGet(String remoteUrl,String localDir) {

NtlmPasswordAuthentication auth = null ;

try {

String userName = "administrator";

String password = "admin?1";

String domainIP = "192.168.0.5";

InetAddress ip = InetAddress.getByName("192.168.0.5");

UniAddress myDomain = new UniAddress(ip);

auth = new NtlmPasswordAuthentication(domainIP, userName, password); //先登录验证

System.out.println("auth:"+auth.getDomain());

System.out.println("username:"+auth.getUsername());

System.out.println("password:"+auth.getPassword());

SmbSession.logon(myDomain,auth);

} catch (UnknownHostException e) {

e.printStackTrace();

System.out.println("111!!!");

} catch (SmbException e) {

e.printStackTrace();

System.out.println("222!!!");

}

InputStream in = null;

OutputStream out = null;

try {

SmbFile remoteFile = new SmbFile(remoteUrl,auth); //注意,这句是关键,SmbFile 不支持特殊字符的密码,因此在这里放置

//remoteFile.connect();

if(remoteFile==null){

log.error("共享文件不存在!000");

return;

}

SmbFile localFile = new SmbFile(localDir,auth);

in = new BufferedInputStream(new SmbFileInputStream(remoteFile));

out = new BufferedOutputStream(new SmbFileOutputStream(localFile));

byte[] buffer = new byte[1024];

while(in.read(buffer)!=-1){

out.write(buffer);

buffer = new byte[1024];

}

}

catch (Exception e) {

e.printStackTrace();

} finally {

try {

out.close();

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

调用:

String st1="smb://192.168.0.5/test/123.jpg";

String st2="smb://192.168.0.5/test/456.jpg";

System.out.println(st1);

System.out.println(st2);

smbGet(st1,st2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐