FileOperate.java整理版

kookob 13年前發布 | 2K 次閱讀

package ob;

import java.io.*;

public class FileOperate { public FileOperate() { }

/**
 * 新建目錄
 * 
 * @param folderPath
 *            String 如 c:/fqf
 * @return boolean
 */
public void newFolder(String folderPath) {
    try {
        File myFilePath = new File(folderPath);
        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 {
        File myFilePath = new File(filePathAndName);
        if (!myFilePath.exists()) {
            myFilePath.createNewFile();
        }
        FileWriter resultFile = new FileWriter(myFilePath);
        PrintWriter myFile = new PrintWriter(resultFile);
        myFile.println(fileContent);
        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 {
        File myDelFile = new File(filePathAndName);
        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); // 刪除完里面所有內容
        File myFilePath = new File(folderPath);
        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];
            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();
    }
}

/**
 * 復制整個文件夾內容
 * 
 * @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.txt
 * @param newPath
 *            String 如:d:/fqf.txt
 */
public void moveFolder(String oldPath, String newPath) {
    copyFolder(oldPath, newPath);
    delFolder(oldPath);

}

}</pre>

 本文由用戶 kookob 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!