天天看點

Java 建立、複制、删除、移動檔案(夾)操作類

package test;  
     
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileOutputStream;  
    import java.io.FileWriter;  
    import java.io.InputStream;  
    import java.io.PrintWriter;  
     
    public class FileOperate {  
        public FileOperate() {  
        }  
     
        /**  
         * 建立目錄  
         *   
         * @param folderPath  
         *            String 如 c:/fqf  
         * @return boolean  
         */ 
        public void newFolder(String folderPath) {  
            try {  
                String filePath = folderPath;  
                filePath = filePath.toString();  
                File myFilePath = new File(filePath);  
                if (!myFilePath.exists()) {  
                    myFilePath.mkdir();  
                }  
            } catch (Exception e) {  
                System.out.println("建立目錄操作出錯 ");  
                e.printStackTrace();  
            }  
        }  
     
        /**  
         * 建立檔案  
         *   
         * @param filePathAndName  
         *            String 檔案路徑及名稱 如c:/fqf.txt  
         * @param fileContent  
         *            String 檔案内容  
         * @return boolean  
         */ 
        public void newFile(String filePathAndName, String fileContent) {  
     
            try {  
                String filePath = filePathAndName;  
                filePath = filePath.toString();  
                File myFilePath = new File(filePath);  
                if (!myFilePath.exists()) {  
                    myFilePath.createNewFile();  
                }  
                FileWriter resultFile = new FileWriter(myFilePath);  
                PrintWriter myFile = new PrintWriter(resultFile);  
                String strContent = fileContent;  
                myFile.println(strContent);  
                resultFile.close();  
     
            } catch (Exception e) {  
                System.out.println("建立檔案操作出錯 ");  
                e.printStackTrace();  
            }  
     
        }  
     
        /**  
         * 删除檔案  
         *   
         * @param filePathAndName  
         *            String 檔案路徑及名稱 如c:/fqf.txt  
         * @param fileContent  
         *            String  
         * @return boolean  
         */ 
        public void delFile(String filePathAndName) {  
            try {  
                String filePath = filePathAndName;  
                filePath = filePath.toString();  
                java.io.File myDelFile = new java.io.File(filePath);  
                myDelFile.delete();  
     
            } catch (Exception e) {  
                System.out.println("删除檔案操作出錯 ");  
                e.printStackTrace();  
     
            }  
     
        }  
     
        /**  
         * 删除檔案夾  
         *   
         * @param filePathAndName  
         *            String 檔案夾路徑及名稱 如c:/fqf  
         * @param fileContent  
         *            String  
         * @return boolean  
         */ 
        public void delFolder(String folderPath) {  
            try {  
                delAllFile(folderPath); // 删除完裡面所有内容  
                String filePath = folderPath;  
                filePath = filePath.toString();  
                java.io.File myFilePath = new java.io.File(filePath);  
                myFilePath.delete(); // 删除空檔案夾  
     
            } catch (Exception e) {  
                System.out.println("删除檔案夾操作出錯 ");  
                e.printStackTrace();  
     
            }  
     
        }  
     
        /**  
         * 删除檔案夾裡面的所有檔案  
         *   
         * @param path  
         *            String 檔案夾路徑 如 c:/fqf  
         */ 
        public void delAllFile(String path) {  
            File file = new File(path);  
            if (!file.exists()) {  
                return;  
            }  
            if (!file.isDirectory()) {  
                return;  
            }  
            String[] tempList = file.list();  
            File temp = null;  
            for (int i = 0; i < tempList.length; i++) {  
                if (path.endsWith(File.separator)) {  
                    temp = new File(path + tempList[i]);  
                } else {  
                    temp = new File(path + File.separator + tempList[i]);  
                }  
                if (temp.isFile()) {  
                    temp.delete();  
                }  
                if (temp.isDirectory()) {  
                    delAllFile(path + "/ " + tempList[i]);// 先删除檔案夾裡面的檔案  
                    delFolder(path + "/ " + tempList[i]);// 再删除空檔案夾  
                }  
            }  
        }  
     
        /**  
         * 複制單個檔案  
         *   
         * @param oldPath  
         *            String 原檔案路徑 如:c:/fqf.txt  
         * @param newPath  
         *            String 複制後路徑 如:f:/fqf.txt  
         * @return boolean  
         */ 
        public void copyFile(String oldPath, String newPath) {  
            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];  
                    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();  
     
            }  
     
        }  
     
        /**  
         * 複制整個檔案夾内容  
         *   
         * @param oldPath  
         *            String 原檔案路徑 如:c:/fqf  
         * @param newPath  
         *            String 複制後路徑 如:f:/fqf/ff  
         * @return boolean  
         */ 
        public void copyFolder(String oldPath, String newPath) {  
            try {  
                (new File(newPath)).mkdirs(); // 如果檔案夾不存在 則建立新檔案夾  
                File a = new File(oldPath);  
                String[] file = a.list();  
                File temp = null;  
                for (int i = 0; i < file.length; i++) {  
                    if (oldPath.endsWith(File.separator)) {  
                        temp = new File(oldPath + file[i]);  
                    } else {  
                        temp = new File(oldPath + File.separator + file[i]);  
                    }  
     
                    if (temp.isFile()) {  
                        FileInputStream input = new FileInputStream(temp);  
                        FileOutputStream output = new FileOutputStream(newPath  
                                + "/ " + (temp.getName()).toString());  
                        byte[] b = new byte[1024 * 5];  
                        int len;  
                        while ((len = input.read(b)) != -1) {  
                            output.write(b, 0, len);  
                        }  
                        output.flush();  
                        output.close();  
                        input.close();  
                    }  
                    if (temp.isDirectory()) {// 如果是子檔案夾  
                        copyFolder(oldPath + "/ " + file[i], newPath + "/ " 
                                + file[i]);  
                    }  
                }  
            } catch (Exception e) {  
                System.out.println("複制整個檔案夾内容操作出錯 ");  
                e.printStackTrace();  
     
            }  
     
        }  
     
        /**  
         * 移動檔案到指定目錄  
         *   
         * @param oldPath  
         *            String 如:c:/fqf.txt  
         * @param newPath  
         *            String 如:d:/fqf.txt  
         */ 
        public void moveFile(String oldPath, String newPath) {  
            copyFile(oldPath, newPath);  
            delFile(oldPath);  
     
        }  
     
        /**  
         * 移動檔案夾到指定目錄  
         *   
         * @param oldPath  
         *            String 如:c:/fqf  
         * @param newPath  
         *            String 如:d:/fqf  
         */ 
        public void moveFolder(String oldPath, String newPath) {  
            copyFolder(oldPath, newPath);  
            delFolder(oldPath);  
        }  
    } 

           

首先聲明,本文章為轉載,位址:      點選打開連結 

個人覺得是很好的文章,用處很多,就推薦給大家看看,是以選擇了“原創”