利用字節流或字符流實現文件夾整體的復制


思路:

1、獲取所有的文件夾和子文件的名稱然后遍歷

2、判斷是否是文件夾,是的話進行復制

  eg:對D盤mp3文件夾內的所有文件進行復制,復制到F盤MP3文件夾。

    (1)、判斷F盤下是否有mp3文件夾,沒有的話進行創建。

    (2)、如果創建其他的字目錄,需要獲得他的目錄名和路徑(划重點)

3、判斷是不是文件,是的話復制(可以用遞歸)

 

發揮大事化小,小事化了的精神,我們分為三個部分:

1、寫一個復制子文件的方法;

2、寫一個復制文件夾的方法;

3、寫一個main函數(廢話);

  eg:分開寫是為了方便理解,這個項目直接寫在main函數中比較麻煩,也不易理解,重點是:我不會、我不會、我不會。。。

直接上截圖了:(通篇可能較為啰嗦,主要是為了把問題說明清楚,也方便今后自己翻看理解此時自己考慮該問題的思路)

  第1步:

  寫一個復制子文件的方法;  (圖片看不清?    解決辦法:1、ctrl+鼠標滑輪,放大網頁。2、把圖片復制到桌面,直接拖出去即可。 3  最底下有  ↓ ↓ ↓   源代碼  ↓ ↓ ↓   )

  

 

第2步

寫一個復制文件夾的方法:

 

第3步 

寫main函數:

 

由於筆者水平有限,理解問題的方法及思路可能不是完全的正確。

不知道你們能不能看懂,

如果沒看懂,

再看一遍

這是字節流的,字符流和字節流的方法類似,只需改幾行代碼。會了這個,那個自然也就會了。

 

 原來可以直接插入代碼,剛發現(⊙﹏⊙)b  (一萬只羊駝奔騰而過。。)

不過源文件里面說明太多,插入到這里總是錯行,看着太亂,所以只放了個純凈版的,可以和上面的圖片對照着讀  (稍微有些麻煩)

package cn.zzsxt.Copy;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyMp3 {
    public static void main(String[] args) {            
        CopyMp3 test = new CopyMp3();                  
        File source = new File("E:/mp3");              
        File target = new File("F:/MP3");               
        test.copyDir(source, target);                  
        System.out.println("復制完成!");                 
    }
    
    
    
    
    public  void  copyFile(File source,File target){
        FileInputStream fis = null;                             
        FileOutputStream fos = null;                            
            try {
                fis = new FileInputStream(source);              
                fos = new FileOutputStream(target);            
                byte [] bs = new byte[1024];                   
                int len;                                       
                while((len=fis.read(bs, 0, bs.length))!=-1){   
                        fos.write(bs, 0, len);                  
                    }                                           
                        fos.flush();                            
            } catch (FileNotFoundException e) {                 
                e.printStackTrace();                           
            } catch (IOException e) {                           
                e.printStackTrace();                           
            }finally{                                           
                try {                                      
                    fos.close();            
                    fis.close();           
                } catch (IOException e) {                                            
                    e.printStackTrace();                                                
                }                                                                                    
        }                                                                                            
    }
    
    
    
    public void copyDir(File source,File target){              
        if(!(target.exists())){                                 
            target.mkdirs();                                   
        }    
            File [] fs = source.listFiles();                    
                for (File file : fs) {                          
                    String fileName = file.getName();           
                    File f = new File(target,fileName);        
                        if(file.isFile()){                      
                            copyFile(file,f);                  
                        }
                        if(file.isDirectory()){                 
                            file.mkdirs();                      
                            copyDir(file,f);                    
                        }                                      
                }                                               
        }                                                     
}                                                              


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM