linuxでファイルをコピーする

2756 ワード

説明:linuxの下で絶対パスでファイルをコピーします.以下のコードは1つのフォルダの中のすべてのファイルを別のフォルダにコピーすることを実現します.
特に注意:linuxとwindowの差が大きいところ:フォルダ(またはファイル)の読み取りや書き込みなどの権限があるので、コピーする必要があるファイルは読み取り可能で、ターゲットフォルダは書き込み可能でなければなりません!私はもうここで何度も失敗しました.
具体的なコードは次のとおりです.
        /***      .
	 * @return List
	 */
	public List<Map<String,Object>> getAddrs() {
		List<Map<String,Object>> listmap = new ArrayList<Map<String,Object>>();

		try {
		        //linux       ,             
			String pathFrom = "/home/dingbing/tomcat7.0.47/webapps/FuploadM/upload/";
			//linux       ,             
			String pathTo = "/home/dingbing/tomcat7.0.47/webapps/filematch/resources/image/uploadNew/";

//			String pathFrom = "C:/Users/AMCC/Desktop/FuploadM/upload";  windows       ,             
//			String pathTo = 
//					"C:/Users/AMCC/Desktop/FileManager/src/main/webapp/resources/image/uploadNew/";    windows       ,     
			
			File file = new File(pathFrom);   
		        // get the folder list   
		        File[] array = file.listFiles();
		        System.out.println("length: " + array.length);
		        if(array != null) {  
		        for(int i=0;i<array.length;i++){ 
		        	Map<String, Object> map = new HashMap<String, Object>();
		            if(array[i].isFile()){
		                // only take file name   
		            	map.put("file_name", array[i].getName());
		            	//    
		            	copyFile(pathFrom + array[i].getName(), pathTo + array[i].getName());
		            	listmap.add(map);
		            }
		        }
		     }
		} catch (Exception e) {
			e.printStackTrace();
		}       
		return listmap;
	}
	
	/***      
	 *
	 */
	
	public  void  copyFile(String  oldPath,  String  newPath)  {
		System.out.println("coping file ...");  
	       try  {  
	           int  bytesum  =  0;  
	           int  byteread  =  0;  
	           File  oldfile  =  new  File(oldPath);  
	           if  (oldfile.exists())  {  //       
	               InputStream  inStream  =  new  FileInputStream(oldPath);  //       
	               FileOutputStream  fs  =  new  FileOutputStream(newPath);  
	               byte[]  buffer  =  new  byte[1444];  
	               int  length;  
	               while  (  (byteread  =  inStream.read(buffer))  !=  -1)  {  
	                   bytesum  +=  byteread;  //           
	                   System.out.println(bytesum);  
	                   fs.write(buffer,  0,  byteread);  
	               }  
	               inStream.close();  
	           }  
	       }  
	       catch  (Exception  e)  {  
	           System.out.println("          ");  
	           e.printStackTrace();  
	 
	       }  
	 
	   }