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

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

2016-07-14 18:49 846 查看
注意,先通过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(); 



}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息