zoukankan      html  css  js  c++  java
  • SambaJava API

    做一个 backup

    package net.jnas;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    
    import jcifs.Config;
    import jcifs.smb.NtlmPasswordAuthentication;
    import jcifs.smb.SmbAuthException;
    import jcifs.smb.SmbException;
    import jcifs.smb.SmbFile;
    import jcifs.smb.SmbFileInputStream;
    import jcifs.smb.SmbFileOutputStream;
    
    import org.apache.log4j.Logger;
    
    public class SambaJavaApi {
        
        //jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password.
        //jcifs.smb.SmbException: Access is denied.
        //寫得時候,smb_dir必須是文件名,而不是路徑
        
        private static String smb_dir = "lnas_service/aa/aaa.doc";//"/home/test/share";
        private static String password = "888888";
        private static String user = "lk2";
        private static String ip = "192.168.4.49";
        private Logger logger = Logger.getLogger(this.getClass().getName());
        private String local_tempDir = "E:\work\samba\test\11.doc";
        
        public static void main(String[] args) {
            
            SambaJavaApi sa = new SambaJavaApi();
            
            
            user = "admin";
            password = "admin";
            sa.uploadViaShare(ip , user, password, smb_dir);
        }
        
        
        public void uploadViaShare(final String ip,final String user,final String password,final String dir)  
            {  
                logger.debug("Share(SMB) download!");  
                  
                String newDir = dir;          
                String url = "";    
                FileInputStream fos = null;  
                SmbFileOutputStream smbIs = null;  
                byte [] buffer = new byte[8192];  
                int readBytes = 0;  
                int totalBytes = 0;  
                
                if (!dir.endsWith("/"))  //directory must end with "/"        
                                        newDir = dir+"/";    
                url = "smb://"+user+":"+password+"@"+ip+""+newDir;  
                
                NtlmPasswordAuthentication auth =  new NtlmPasswordAuthentication(ip, user, password);
                
                long startTime = System.currentTimeMillis();  
                try {  
                    url = "smb://"+ip +"/"+ dir;
                    System.out.println(url);
                    
                    Config.setProperty("jcifs.netbios.wins", ip);
                    
                    SmbFile shareDir = new SmbFile(url, auth);
                    shareDir.connect();
    //                SmbFile shareDir = new SmbFile(url);  
                    if(shareDir.isDirectory())
                    {
                        smbIs = new SmbFileOutputStream(shareDir);  
                        fos = new FileInputStream(new File(local_tempDir));  
                        while((readBytes = fos.read(buffer)) > 0 )  
                        {  
                            smbIs.write(buffer,0,readBytes);  
                            totalBytes += readBytes;  
                        }  
                        smbIs.close();  
                        fos.close();  
                        long endTime = System.currentTimeMillis();  
                        long timeTaken = endTime-startTime;  
                        logger.debug(totalBytes +"bytes downloaded in " + timeTaken/1000 + " seconds at "+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec");  
                    }
                }catch(MalformedURLException urle)  
                {  
                    logger.debug("Incorrect URL format!");  
                }catch (SmbException smbe) {  
                    smbe.printStackTrace();  
                    logger.debug(this.getClass().getName()+"||"+smbe.getMessage());  
                }catch(IOException ioe)  
                {  
                    ioe.printStackTrace();  
                    logger.debug(this.getClass().getName()+"||"+ioe.getMessage());  
                }finally  
                {  
                    try  
                    {  
                        smbIs.close();  
                        fos.close();  
                    }catch(Exception smbe)  
                    {  
                        logger.debug(this.getClass().getName()+"||"+smbe.getMessage());  
                    }  
                }  
                  
            }
    
    
        public void downloadViaShare(final String ip,final String user,final String password,final String dir)  
                {  
                    logger.debug("Share(SMB) download!");  
                      
                    String newDir = dir;          
                    String url = "";    
                    SmbFile [] fileList = null;  
                    FileOutputStream fos = null;  
                    SmbFileInputStream smbIs = null;  
                    byte [] buffer = new byte[8192];  
                    int readBytes = 0;  
                    int totalBytes = 0;  
                          
                    if (!dir.endsWith("/"))  //directory must end with "/"        
                                            newDir = dir+"/";    
                    url = "smb://"+user+":"+password+"@"+ip+""+newDir;  
                    
                    
                    NtlmPasswordAuthentication auth =  new NtlmPasswordAuthentication(ip, user, password);
                    
                    
                      
                    long startTime = System.currentTimeMillis();  
                    try {  
                        url = "smb://"+ip +"/"+ dir;
        
                        System.out.println(url);
                        
        //                final NtlmPasswordAuthentication AUTH = new NtlmPasswordAuthentication("domainname", "username", "password");
                        Config.setProperty("jcifs.netbios.wins", ip);
        
        //                Properties props = new Properties();
        //                InputStream in = new SmbFileInputStream(new SmbFile("smb://10.10.1.1:445/rootfolder/path/filename.properties", AUTH));
        //                props.load(in);
                        
                        
                        SmbFile shareDir = new SmbFile(url, auth);
                        shareDir.connect();
        //                SmbFile shareDir = new SmbFile(url);  
                        if(shareDir.isDirectory())  
                        {  
                            fileList = shareDir.listFiles();    
                            for(int i=0;i<fileList.length;i++)    
                            {  
                                if(fileList[i].isFile())  
                                {  
                                    smbIs = new SmbFileInputStream((SmbFile)fileList[i]);  
                                    fos = new FileOutputStream(new File(local_tempDir +File.separator+fileList[i].getName()));  
                                    while((readBytes = smbIs.read(buffer)) > 0 )  
                                    {  
                                        fos.write(buffer,0,readBytes);  
                                        totalBytes += readBytes;  
                                    }  
                                    smbIs.close();  
                                    fos.close();  
                                    
        //                            break;
        //                            logger.debug(fileList[i].getName() + " is downloaded!");  
        //                            try  
        //                            {  
        //                                fileList[i].delete();    
        //                            }catch(SmbAuthException smbae )  
        //                            {  
        //                                logger.debug(fileList[i].getName()+" can not be deleted!");  
        //                            }  
                                }  
                            }  
                            long endTime = System.currentTimeMillis();  
                            long timeTaken = endTime-startTime;  
                            logger.debug(totalBytes +"bytes downloaded in " + timeTaken/1000 + " seconds at "+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec");  
                        }  
                    }catch(MalformedURLException urle)  
                    {  
                        logger.debug("Incorrect URL format!");  
                    }catch (SmbException smbe) {  
                        smbe.printStackTrace();  
                        logger.debug(this.getClass().getName()+"||"+smbe.getMessage());  
                    }catch(IOException ioe)  
                    {  
                        ioe.printStackTrace();  
                        logger.debug(this.getClass().getName()+"||"+ioe.getMessage());  
                    }finally  
                    {  
                        try  
                        {  
                            smbIs.close();  
                            fos.close();  
                        }catch(Exception smbe)  
                        {  
                            logger.debug(this.getClass().getName()+"||"+smbe.getMessage());  
                        }  
                    }  
                      
                }  
        
        
    //    private void Asasf() {
    //        // TODO Auto-generated method stub
    //         String strprog = "STRING CREATED| "; //debug log string
    //            try {
    //                strprog += "NTLM| ";
    //                NtlmPasswordAuthentication auth =  new NtlmPasswordAuthentication("username:password");
    //                strprog += "SMB| ";
    //                SmbFile file = new SmbFile("smb://<pcname>/foldername/filename.txt",auth);
    //
    //                strprog += "EXIST| ";
    //                String there = String.valueOf(file.exists());
    //
    //                strprog += "View| ";
    //                TextView pp;
    //                pp = (TextView) findViewById(R.id.tv);
    //                pp.setText(there);
    //
    //
    //
    //            } catch (Exception e) {
    //                // TODO Auto-generated catch block
    //                strprog += "ERROR! ";
    //                TextView ll;
    //                ll = (TextView) findViewById(R.id.tv);
    //
    //
    //                ll.setText(strprog + e.getStackTrace().toString() + "    " +  e.getMessage() + "   " + e.getLocalizedMessage() );
    //            }
    //    }
    }
  • 相关阅读:
    Python字典dict对象方法总结
    PythonString字符串的相关方法
    Mysql5.7.20使用group by查询(select *)时出现错误修改sql mode
    HtmlTestRunner无法生成HTML报告问题
    话说 type 之 record 记录的使用技巧 F#
    Silverlight OOB 获取桌面可视尺寸 F# PInvoke
    目前让 F# 支持 Silverlight 5 的解决方案(包括 lazy 不可用)
    话说 type 之 let 绑定与 val 显式字段 F#
    这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
    Asp.net 在三层架构中事务的使用
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/5654345.html
Copyright © 2011-2022 走看看