java共享目录
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; 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("@").substring(remoteFile.getPath().split("@").indexOf("/")+1,remoteFile.getPath().split("@").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; while (in.read(buffer) != -1) { out.write(buffer); buffer = new byte;}} 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.toString());readFromSmb( rmifilelist.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); dateMap.put("productDate", replaceString);// dateMap.put("productInf", replaceString); list.add(dateMap);// FtpHelper.upload(ServerIp, "21", ServerUsername, ServerPassword, "/ftp_user/"+filenamelist.get(i).toString(), ServerFilepath+"/"+ServerFilenamelist.get(i).toString());ftpUtil1.upload("/smb_user/"+filenamelist.get(i).toString(),ServerFilenamelist.get(i).toString(),ServerFilepath);filenamenotexit1=filename;filenamenotexit2=ServerFilename;responseftpinfo=ServerIp+"ftp服务器上传成功.上传后的文件为"+ServerFilenamelist.get(i).toString();System.out.println("----"+filenamenotexit1+"---"+ServerFilepath+"/"+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+"/"+filename;//ftpUtil.download(filepath+"/"+filename,"/ftp_user/"+filename);readFromSmb( smbMachine, "/smb_user/");filenamenotexit=filename;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.replace(replaceString, "")+"/"); File filefir[]=filefirst.listFiles(); int startIndex =filename.indexOf(replaceString);int endIndex =filename.indexOf(replaceString);int startIndex1 =ServerFilename.indexOf(replaceString);int endIndex1 =ServerFilename.indexOf(replaceString); 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.substring(0,startIndex1)+filefir.getName().substring( startIndex,startIndex+replaceString.length()) +ServerFilename.substring(startIndex1+replaceString.length()); ftpUtil1.upload("/smb_temp_first_down/"+filename.replace(replaceString,"")+"/"+ filefir.getName(),romtfilename,ServerFilepath); Map dateMap = new HashMap(); dateMap.put("productName", romtfilename); dateMap.put("productDate", filefir.getName().substring( startIndex,startIndex+replaceString.length())); datelist.add(dateMap); System.out.println("/smb_temp_first_down/"+ romtfilename+ filefir.getName().substring( startIndex,startIndex+replaceString.length())+"=---------"+filename.replace(replaceString,"")+"/"+filefir.getName()+ServerFilepath+"/"+filefir.getName()); }catch (Exception e) {System.out.println(filenamenotexit1+ServerFilepath+filenamenotexit2); responseftpinfo=ServerIp+"ftp服务器上传失败。路径或文件名有误。原文件名是"+filefir.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+"/";File file3 =new File("/smb_temp_first_down/"+filename.replace(replaceString, "")+"/"); if(!file3.exists()) file3.mkdirs();//System.out.println(ftpUtil.cd(filepath+"/"));//List filelist =ftpUtil.getFileNameList(".");SmbFile rmifile = new SmbFile(smbMachine);SmbFile [] rmifilelist=rmifile.listFiles();List filelist =java.util.Arrays.asList(rmifilelist);int startIndex =filename.indexOf(replaceString); int endIndex =filename.indexOf(replaceString);if(startIndex==-1){continue ;}SimpleDateFormat dateformat1=new SimpleDateFormat(replaceString); for(int j=0 ; j<filelist.size();j++){ if(!((filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/")+1).length())==filename.length())) { continue;// ==filename.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.length()))); date =true; } catch (ParseException e) { // TODO Auto-generated catch block continue; } if( date&&filename.replace(replaceString, "").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.length()))){ System.out.println(filepath+"/"+filelist.get(j).toString().substring(filelist.get(j).toString().lastIndexOf("/"))+"-----"+"/ftp_temp_first_down/"+filename.replace(replaceString, "")+"/"+filelist.get(j).toString());// ftpUtil.download(filepath+"/"+filelist.get(j).toString(),"/ftp_temp_first_down/"+filename.replace(replaceString, "")+"/"+filelist.get(j).toString()); readFromSmb( filelist.get(j).toString(),"/smb_temp_first_down/"+filename.replace(replaceString, "")+"/"); } } }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); System.out.println("删除本地临时的文件!"+files.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; String [] str1= new String; String [] str2= new String; String [] str3= new String; String [] str4= new String; str =filepath; str1 =filename; str2 =ServerFilepath; str3 =ServerFilename; str4 =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; String [] str1= new String; String [] str2= new String; String [] str3= new String; str =filepath; str1 =filename; str2 =ServerFilepath; str3 =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;}}
页:
[1]