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

注意,先通过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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值