六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

java共享目录

[复制链接]

升级  34%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
17
 楼主| 发表于 2013-2-3 10:30:08 | 显示全部楼层 |阅读模式
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.MalformedURLException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import jcifs.smb.SmbFile;import jcifs.smb.SmbFileInputStream;import jcifs.smb.SmbFileOutputStream;public class SmbCope2Server implements FtpFileCope{  private boolean first =true ;  private String responseftpinfo ="";    public static void main(String[] args){        }    /** ***         * 从smbMachine读取文件并存储到localpath指定的路径          *          * @param smbMachine         *            共享机器的文件,如smb://xxx:xxx@10.108.23.112/myDocument/测试文本.txt,xxx:xxx是共享机器的用户名密码         * @param localpath          *            本地路径       * @return           */ public static File readFromSmb(String smbMachine,String localpath){        File localfile=null;        InputStream bis=null;        OutputStream bos=null;        try {            SmbFile rmifile = new SmbFile(smbMachine);            if(rmifile==null){            return null ;            }            String filename=rmifile.getName();            bis=new BufferedInputStream(new SmbFileInputStream(rmifile));            localfile=new File(localpath+File.separator+filename);            bos=new BufferedOutputStream(new FileOutputStream(localfile));            int length=rmifile.getContentLength();            byte[] buffer=new byte[length];            Date date=new Date();            bis.read(buffer);            bos.write(buffer);            Date end=new Date();            int time= (int) ((end.getTime()-date.getTime())/1000);            if(time>0)                System.out.println("用时:"+time+"秒 "+"速度:"+length/time/1024+"kb/秒");                    } catch (Exception e){            // TODO Auto-generated catch block            System.out.println(e.getMessage());                    }finally{            try {                bos.close();                bis.close();            } catch (IOException e) {//                // TODO Auto-generated catch block                e.printStackTrace();            }                    }        return localfile;    }/** *  * Description: 从本地上传文件到共享目录 *  * @Version1.0 Sep 25, 2009 3:49:00 PM *  * @param remoteUrl *            共享文件目录 *  * @param localFilePath *            本地文件绝对路径 *  */public void smbPut(String remoteUrl, String localFilePath) {InputStream in = null;        OutputStream out = null;try {File localFile = new File(localFilePath);String fileName = localFile.getName();SmbFile remoteFile = new SmbFile(remoteUrl + "/");//System.out.println(remoteFile.getPath().split("@")[1].substring(remoteFile.getPath().split("@")[1].indexOf("/")+1,remoteFile.getPath().split("@")[1].lastIndexOf("/")+1));if(!remoteFile.exists())remoteFile.mkdirs();remoteFile = new SmbFile(remoteUrl + "/" + fileName);in = new BufferedInputStream(new FileInputStream(localFile));            out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));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();}}}public static File readFromSmbList(String smbMachine,String localpath, String replaceString) {try {SmbFile rmifile = new SmbFile(smbMachine);SmbFile [] rmifilelist=rmifile.listFiles();for(int i=0,n=rmifilelist.length;i<n;i++){System.out.println(rmifilelist[i].toString());readFromSmb( rmifilelist[i].toString(),localpath);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}    public static boolean removeFile(File file) {        return file.delete();    }@Overridepublic List ftpFile2Server(String ip, int port, String username,String password, String[] filepath, String[] filename,String ServerIp, int ServerPort, String ServerUsername,String ServerPassword, String[] ServerFilepath,String[] ServerFilename, String replaceString) {// TODO Auto-generated method stubList list =null ;if(doDownCopy( ip,port , username, password, filepath,filename)){list  =  doUpload(ServerIp, ServerPort, ServerUsername,ServerPassword, ServerFilepath, ServerFilename ,filename ,replaceString);}return list;} String filenamenotexit1=""; String filenamenotexit2="";private List doUpload(String ServerIp,int ServerPort,String ServerUsername, String ServerPassword,String ServerFilepath [] , String [] ServerFilename,String [] filename ,String replaceString) {// TODO Auto-generated method stubFtpClientUtil ftpUtil1 = new FtpClientUtil (  ServerIp ,ServerPort,ServerUsername,ServerPassword) ;    if(!ftpUtil1.open()){    responseftpinfo=ServerIp+"ftp服务器上传时连接失败。请检查Ip端口用户名密码等信息。";    return null ;    }List list = new ArrayList();try {List ServerFilenamelist =Arrays.asList(ServerFilename);List filenamelist =Arrays.asList(filename);for(int i=0,n=filenamelist.size();i<n;i++){Map dateMap = new HashMap();     dateMap.put("productName", ServerFilename[i]);     dateMap.put("productDate", replaceString);//     dateMap.put("productInf", replaceString);     list.add(dateMap);//                FtpHelper.upload(ServerIp, "21", ServerUsername, ServerPassword, "/ftp_user/"+filenamelist.get(i).toString(), ServerFilepath[i]+"/"+ServerFilenamelist.get(i).toString());ftpUtil1.upload("/smb_user/"+filenamelist.get(i).toString(),ServerFilenamelist.get(i).toString(),ServerFilepath[i]);filenamenotexit1=filename[i];filenamenotexit2=ServerFilename[i];responseftpinfo=ServerIp+"ftp服务器上传成功.上传后的文件为"+ServerFilenamelist.get(i).toString();System.out.println("----"+filenamenotexit1+"---"+ServerFilepath[i]+"/"+filenamenotexit2);}} catch (Exception e) {System.out.println(filenamenotexit1+ServerFilepath+filenamenotexit2);responseftpinfo=ServerIp+"ftp服务器上传文件时失败,上传的路径可能有误(应该为全路径)。";e.printStackTrace();}finally{if(ftpUtil1!=null){ftpUtil1.close();}}return list;}Stringfilenamenotexit =""  ;private boolean doDownCopy(String ip, int port, String username,String password, String[] filepath, String[] filename) {// TODO Auto-generated method stub        boolean down = false ;//        String smbMachine="smb://administrator:pe01AT&*(@10.28.16.28/public/detu/";//    FtpClientUtil ftpUtil = new FtpClientUtil ( ip ,port,username,password) ;//    if(!ftpUtil.open()){//    responseftpinfo=ip+"ftp服务器下载时连接失败。请检查Ip端口用户名密码等信息。";//    return false ;//    }//    try {File file1 =new File("/smb_user/");if(!file1.exists()) file1.mkdirs();for(int i=0 ; i<filename.length;i++){  String smbMachine="smb://"+username+":"+password+"@"+ip+filepath[i]+"/"+filename[i];//ftpUtil.download(filepath[i]+"/"+filename[i],"/ftp_user/"+filename[i]);  readFromSmb( smbMachine, "/smb_user/");filenamenotexit=filename[i];down = true ;}first=false;responseftpinfo=ip+"ftp服务器下载成功";} catch (Exception e) {System.out.println("----数据库录入的文件在服务器上不存在---该路径和文件"+filepath+"/"+filenamenotexit+"------");//e.printStackTrace();down =false ;responseftpinfo=ip+"ftp服务器下载失败"+"----数据库录入的文件在服务器上不存在---该路径和文件"+filepath+"/"+filenamenotexit+"------";}finally{}return down ;}@Overridepublic List ftpFile2Server(String ip, int port, String username,String password, String[] filepath, String[] filename,String ServerIp, int ServerPort, String ServerUsername,String ServerPassword, String[] ServerFilepath,String[] ServerFilename, String[] replaceString) {// TODO Auto-generated method stubdoDownCopyfirst( ip,port , username, password, filepath,filename,replaceString);  List list =  doUploadfirst(ServerIp, ServerPort, ServerUsername,ServerPassword, ServerFilepath, ServerFilename ,filename,replaceString);return list;}private List doUploadfirst( String ServerIp,int ServerPort,String ServerUsername, String ServerPassword,String ServerFilepath [] , String [] ServerFilename,String [] filename, String replaceString []) {// TODO Auto-generated method stubFtpClientUtil ftpUtil1;     List datelist  = new ArrayList ();for(int i=0 ; i<filename.length;i++){ File filefirst= new File("/smb_temp_first_down/"+filename[i].replace(replaceString[i], "")+"/");     File filefir[]=filefirst.listFiles();             int startIndex =filename[i].indexOf(replaceString[i]);int endIndex =filename[i].indexOf(replaceString[i]);int startIndex1 =ServerFilename[i].indexOf(replaceString[i]);int endIndex1 =ServerFilename[i].indexOf(replaceString[i]);       for(int j=0;j<filefir.length;j++){     ftpUtil1 = new FtpClientUtil (  ServerIp ,ServerPort,ServerUsername,ServerPassword) ;     if(!ftpUtil1.open()){     responseftpinfo=ServerIp+"ftp服务器上传时连接服务器失败。请检查Ip端口用户名密码等信息。";     return null ;     }     try {     String romtfilename = ServerFilename[i].substring(0,startIndex1)+filefir[j].getName().substring( startIndex,startIndex+replaceString[i].length())                        +ServerFilename[i].substring(startIndex1+replaceString[i].length());     ftpUtil1.upload("/smb_temp_first_down/"+filename[i].replace(replaceString[i],"")+"/"+ filefir[j].getName(),romtfilename,ServerFilepath[i]);     Map dateMap = new HashMap();     dateMap.put("productName", romtfilename);     dateMap.put("productDate", filefir[j].getName().substring( startIndex,startIndex+replaceString[i].length()));     datelist.add(dateMap);     System.out.println("/smb_temp_first_down/"+ romtfilename+ filefir[j].getName().substring( startIndex,startIndex+replaceString[i].length())+"=---------"+filename[i].replace(replaceString[i],"")+"/"+filefir[j].getName()+ServerFilepath[i]+"/"+filefir[j].getName());         }catch (Exception e) {System.out.println(filenamenotexit1+ServerFilepath+filenamenotexit2); responseftpinfo=ServerIp+"ftp服务器上传失败。路径或文件名有误。原文件名是"+filefir[j].getName() ;e.printStackTrace();}finally{if(ftpUtil1!=null){ftpUtil1.close();}} responseftpinfo=ServerIp+"ftp服务器图片上传成功。上传了"+filefir.length+"个图片";}     }File filelocal= new File("/smb_temp_first_down/");if(filelocal.exists())this.deleteFile(filelocal);return datelist;}private boolean doDownCopyfirst(String ip, int port, String username,String password, String[] filepath, String[] filename,String[] replaceString) { File file2 =new File("/smb_temp_first_down/"); if(!file2.exists()) file2.mkdirs();// FtpClientUtil ftpUtil = new FtpClientUtil ( ip ,port,username,password) ;// if(!ftpUtil.open()){//    responseftpinfo=ip+"ftp服务器下载时连接失败。请检查Ip端口用户名密码等信息。";//    return false ;//    } try {for(int i=0 ; i<filename.length;i++){  String smbMachine="smb://"+username+":"+password+"@"+ip+filepath[i]+"/";File file3 =new File("/smb_temp_first_down/"+filename[i].replace(replaceString[i], "")+"/"); if(!file3.exists()) file3.mkdirs();//System.out.println(ftpUtil.cd(filepath[i]+"/"));//List filelist =ftpUtil.getFileNameList(".");SmbFile rmifile = new SmbFile(smbMachine);SmbFile [] rmifilelist=rmifile.listFiles();List filelist =java.util.Arrays.asList(rmifilelist);int startIndex =filename[i].indexOf(replaceString[i]);    int endIndex =filename[i].indexOf(replaceString[i]);if(startIndex==-1){continue ;}SimpleDateFormat dateformat1=new SimpleDateFormat(replaceString[i]);          for(int j=0 ; j<filelist.size();j++){                if(!((filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).length())==filename[i].length()))        {        continue;// ==filename[i].length()        }        boolean date =false;             try {             System.out.println(filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).substring(startIndex));            Date a1=dateformat1.parse(( filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).substring( startIndex,startIndex+replaceString[i].length())));             date =true;        } catch (ParseException e) {        // TODO Auto-generated catch block        continue;        }           if( date&&filename[i].replace(replaceString[i], "").equals(filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).substring(0, startIndex)+filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).substring(endIndex+replaceString[i].length()))){      System.out.println(filepath[i]+"/"+filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/"))+"-----"+"/ftp_temp_first_down/"+filename[i].replace(replaceString[i], "")+"/"+filelist.get(j).toString());//      ftpUtil.download(filepath[i]+"/"+filelist.get(j).toString(),"/ftp_temp_first_down/"+filename[i].replace(replaceString[i], "")+"/"+filelist.get(j).toString());      readFromSmb( filelist.get(j).toString(),"/smb_temp_first_down/"+filename[i].replace(replaceString[i], "")+"/");         }         }    }responseftpinfo=ip+"ftp服务器下载成功";} catch (Exception e) {System.out.println("----数据库录入的文件在服务器上不存在---该路径和文件"+filepath.toString()+"/"+filenamenotexit+"------");responseftpinfo=ip+"ftp服务器下载失败"+"----数据库录入的文件在服务器上不存在---该路径和文件"+filepath.toString()+"/"+filenamenotexit+"------";e.printStackTrace();}finally{//if(ftpUtil!=null){//ftpUtil.close();//}}return true;}private void deleteFile(File file){    if(file.exists()){     if(file.isFile()){      file.delete();     }else if(file.isDirectory()){      File files[] = file.listFiles();      for(int i=0;i<files.length;i++){       this.deleteFile(files[i]);       System.out.println("删除本地临时的文件!"+files[i].getName()+'\n');     }     }     file.delete();    }else{     System.out.println("所删除的文件不存在!"+'\n');    } }@Overridepublic List ftpFile2Server(String ip, int port, String username,String password, String filepath, String filename, String ServerIp,int ServerPort, String ServerUsername, String ServerPassword,String ServerFilepath, String ServerFilename, String replaceString) {// TODO Auto-generated method stubString [] str= new String[1];    String [] str1= new String[1];        String [] str2= new String[1];    String [] str3= new String[1];    String [] str4= new String[1];    str [0]=filepath;    str1 [0]=filename;    str2 [0]=ServerFilepath;     str3 [0]=ServerFilename;        str4 [0]=replaceString;             return    ftpFile2Server( ip,  port,  username,     password,  str, str1,    ServerIp, ServerPort,  ServerUsername,     ServerPassword,  str2,     str3,  str4);}@Overridepublic List ftpFile2ServerOne(String ip, int port, String username,String password, String filepath, String filename, String ServerIp,int ServerPort, String ServerUsername, String ServerPassword,String ServerFilepath, String ServerFilename, String replaceString) {// TODO Auto-generated method stubString [] str= new String[1];    String [] str1= new String[1];        String [] str2= new String[1];    String [] str3= new String[1];        str [0]=filepath;    str1 [0]=filename;    str2 [0]=ServerFilepath;     str3 [0]=ServerFilename;                     return    ftpFile2Server( ip,  port,  username,     password,  str, str1,    ServerIp, ServerPort,  ServerUsername,     ServerPassword,  str2,     str3,  replaceString);}@Overridepublic String getResponseftpinfo() {// TODO Auto-generated method stubreturn responseftpinfo;}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表