Java學習筆記(三)——文件讀寫操作

package systemManager;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

/**
 * 
 * @author chencong 文件管理系統
 */
public class FileManager {

    /**
     * 在指定文件路徑下創建文件夾或者是在項目根目錄下創建文件夾
     * 
     * @param dirName
     * @return 返回創建文件夾的路徑
     */
    public String createDir(String dirName) {
        if (dirName == null) {
            return null;
        }
        File file = new File(dirName);
        if (file.exists()) {
            file.delete();
        }
        file.mkdir();
        return file.getAbsolutePath();
    }

    /**
     * 在指定位置創建文件 返回文件的相對路徑
     * 
     * @param fileName
     * @return 返回文件的絕對路徑
     */
    public String createFile(String fileName) {
        if (fileName == null) {
            return null;
        }
        File file = new File(fileName);
        if (file.exists()) {
            file.delete();
        }
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file.getAbsolutePath();
    }

    /**
     * 向指定文件中寫入內容,如果該文件不存在,則在指定位置創建該文件再寫入
     * 
     * @param fileName
     *            指定文件的路徑名稱
     * @param value
     *            將要向該文件中寫入的內容
     * @throws Exception
     *             拋出異常
     */
    public void setSomeByFile(String fileName, String value) throws Exception {
        if (fileName == null || value == null) {
            return;
        }
        File file = new File(fileName);
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream outputStream = new FileOutputStream(file, true);
        byte[] bytes = value.getBytes("utf-8");
        for (byte b : bytes) {
            outputStream.write(b);
        }
        outputStream.close();
    }

    /**
     * 返回指定位置文件的內容,如果該文件不存在或者該文件爲文件夾直接返回null
     * 
     * @param fileName
     *            將要獲得內容的文件路徑
     * @return 返回null 或者 是文件的內容
     */
    public String getSomeByFile(String fileName) {
        if (fileName == null) {
            return null;
        }
        File file = new File(fileName);
        // 如果指定路徑文件不存在 直接返回空 ,傳入路徑爲目錄則直接返回空
        if (!file.exists() || file.isDirectory()) {
            return null;
        }
        // 否則獲取該文件中的內容
        StringBuffer sBuffer = new StringBuffer();
        try {
            String msg = null;
            // 創建字符流
            FileReader fileReader = new FileReader(file);
            // 創建字符緩衝流
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            while ((msg = bufferedReader.readLine()) != null) {
                sBuffer.append(msg);
            }
            bufferedReader.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return sBuffer.toString();
    }

    /**
     * 將源文件內容複製到目的地址文件當中。
     * <P>
     * 如果源文件名爲null 或者目的地址爲null 則統一放回null
     * <p>
     * 如果原地址不爲空且爲文件則將其內容返回並copy進入目的地址
     * <p>
     * 如果目的地址文件不存在且目的地址正確爲文件名,則創建一個文件
     * 
     * @param sourceName
     *            源文件名
     * @param destName
     *            目的文件名
     * @return 返回源文件當中的內容
     * @throws Exception
     */
    public String copyFileByName(String sourceName, String destName) throws Exception {
        if (sourceName == null || destName == null) {
            return null;
        }
        File sourceFile = new File(sourceName);
        // 獲得源文件當中的內容
        String sourceMsg = null;
        if (!sourceFile.exists() || sourceFile.isDirectory()) {
            return null;
        }
        // 或得到源文件當中的內容 並且將其複製進目的文件當中
        sourceMsg = getSomeByFile(sourceFile.getAbsolutePath());
        File destFile = new File(destName);
        // 如果這個目的地址不存在 則創建這個目的地址
        if (!destFile.exists()) {
            destFile.createNewFile();
        }
        if (destFile.isDirectory()) {
            return null;
        }
        // 向目的地址當中寫入內容
        FileOutputStream outputStream = new FileOutputStream(destFile);
        byte[] bytes = sourceMsg.getBytes("utf-8");
        for (byte b : bytes) {
            outputStream.write(b);
        }
        outputStream.close();
        return sourceMsg;
    }

    /**
     * 將指定地方的圖片複製到目的地址,同上操作判斷是否爲空,返回boolean
     * <p>
     * 根據操作是否成功返回boolean
     * 
     * @param sourceName
     *            原地址路徑
     * @param descName
     *            目的地址路徑
     * @return 返回操作是否成功
     */
    public boolean copyImageByName(String sourceName, String descName) {
        if (sourceName == null || descName == null) {
            return false;
        }
        File sourceFile = new File(sourceName);
        if (!sourceFile.exists() || sourceFile.isDirectory()) {
            return false;
        }
        File descFile = new File(descName);
        if (descFile.exists() || descFile.isDirectory()) {
            return false;
        }
        try {
            FileInputStream inputStream = new FileInputStream(sourceFile);
            FileOutputStream outputStream = new FileOutputStream(descFile);
            byte[] buffer = new byte[100];
            int num = inputStream.read(buffer);
            while (num > 0) {
                outputStream.write(buffer, 0, num);
                num = inputStream.read(buffer);
            }
            inputStream.close();
            outputStream.close();
            return true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章