`

java共享目录

    博客分类:
  • 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[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 block
		e.printStackTrace();
	}
	
	
	
	return null;
	
}

    public static boolean removeFile(File file) {
        return file.delete();
    }

	@Override
	public 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 stub
		List 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 stub
		FtpClientUtil 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;
	}
	String	filenamenotexit =""  ;
	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 ;
	}

	@Override
	public 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 stub
		doDownCopyfirst( 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 stub
		FtpClientUtil 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'); 
		   } 
		}
	@Override
	public 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 stub
		String [] 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);
	}

	@Override
	public 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 stub
		String [] 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);
	}

	@Override
	public String getResponseftpinfo() {
		// TODO Auto-generated method stub
		return responseftpinfo;
	}
}
分享到:
评论

相关推荐

    超详细!java访问windows共享目录并下载文件

    在Java编程环境中,有时我们需要与Windows操作系统进行交互,例如访问共享目录并下载其中的文件。这个过程涉及到几个关键的技术点,包括系统调用、网络通信和文件操作。在这个场景下,我们将通过`SmbUtils.java`和`...

    java 操作windows 共享目录方法介绍

    java 操作windows 共享目录方法介绍

    超详细!可用!java(jcraft,SFTP)访问linux目录并下载共享目录文件

    java访问linux;通过linux主机ip,端口,用户名,密码,获取linux链接,输入文件路径可批量的下载linux文件,mian函数为测试代码

    Java读写Windows共享文件夹的方法实例

    本篇文章主要介绍了Java读写Windows共享文件夹的方法实例,具有一定的参考价值,有兴趣的同学可以了解一下。

    java读取局域网共享机器文件

    共享文件即是在局域网内的某台机器上设定一个共享目录,其他机器可以通过网络路径访问这些文件。 要实现Java读取局域网共享文件,主要涉及以下步骤和知识点: 1. **网络路径表示**:Java中,网络路径通常以UNC...

    JAVA实现局域网桌面共享

    接下来,我们将深入探讨JAVA实现局域网桌面共享的相关知识点。 首先,JAVA是一种广泛使用的跨平台编程语言,它的网络编程能力强大,适合处理局域网内的通信问题。实现桌面共享,关键在于创建一个服务器端应用,用于...

    Java远程共享目录的操作代码

    Java远程共享目录的操作代码 Java远程共享目录的操作代码是指使用Java语言来操作远程共享目录的实现代码。这种操作代码非常重要,因为它涉及到文件下载和上传到远程共享目录,特别是在涉及到支付文件时,需要确保...

    java共享聊天器目录

    而“java共享聊天器目录”这个主题,似乎涉及到使用Java技术开发一个可以多人交互的在线聊天应用程序。在这个项目中,前端部分可能使用了HTML、CSS、DIV和JavaScript来创建用户界面和实现动态功能。 HTML...

    java读取win共享文件夹

    在Java编程环境中,读取Windows共享文件夹的内容并将其保存到本地是一项常见的任务,尤其在分布式系统或跨平台协作中。下面将详细讲解如何通过Java实现这一功能,以及涉及的相关知识点。 首先,Java中没有内置的...

    完美支持Windows 从共享目录下载文件到本地

    java 中算法,支持从windows 局域网共享目录中 从后台 下载 文件到本地,以便于解析和执行,上传等

    java共享文件(windows).rar

    Java在Windows环境中实现文件共享涉及多个关键知识点,包括文件I/O操作、网络编程以及系统权限配置。以下将详细阐述这些内容: 1. **Java文件I/O操作**:Java提供了丰富的API来处理文件读写和目录操作。核心类如`...

    java操作共享文件

    在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,可能需要访问网络上的文件系统资源。Java提供了一些库来实现这一功能,其中之一就是jcifs库,它是一个开源的Java SMB(Server Message ...

    java访问共享文件

    标题“Java访问共享文件”指的是使用Java编程语言来操作网络上的共享文件系统,这通常涉及到Windows的SMB(Server Message Block)协议或者更现代的CIFS(Common Internet File System)协议。这篇博客文章可能详细...

    java读写ftp文件以及设置ftp共享服务器

    java读写ftp文件以及设置ftp共享服务器

    达内java培训目录

    达内java培训目录 课程 课程内容 课程目标 第一阶段(以Tetris项目贯穿) Java语言基础 算法基础、常用数据结构、企业编程规范。 掌握常见的数据结构和实用算法;培养良好的企业级编程习惯。 Java面向对象 面向...

    JAVA SMB共享文件夹操作文件jar支持smb2、smb3.rar

    它支持SMB2和SMB3协议,允许Java应用程序连接到SMB共享,执行读写文件、创建目录、删除文件等操作。Smbj库提供了异步和同步API,可以方便地集成到多线程环境中。 3. **mbassador-1.3.2.jar**:这是一个事件驱动框架...

    java调用cmd创建目录和复制文件

    在Java编程中,有时我们需要执行一些系统级别的操作,如创建目录、复制文件等,这些操作在Windows系统中可以通过命令行接口(CMD)来完成。Java提供了Runtime类和ProcessBuilder类来实现这样的功能,允许我们调用...

    使用j-Interop查询共享目录

    标题“使用j-Interop查询共享目录”涉及到的是Java编程中如何通过j-Interop库来访问Windows Management Instrumentation (WMI)服务,以便查询和管理Windows系统中的共享目录。这是一个跨平台编程的示例,其中Java...

    java 写的一个 共享服务器

    完成一个多线程的文件共享服务器,可以控制允许连接数,以及可以设置多个共享目录。

    java源码包---java 源码 大量 实例

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

Global site tag (gtag.js) - Google Analytics