JAVA基础文件读写类
原创 52cxy 04-03 21:18 阅读数:454

支持基本的文件读写、删除等操作,功能比较全面:

import java.util.*;
import java.io.*;

public class FileManage {
    public static int PARAMETER_ERROR = -1;
    public static int FILE_NOT_EXIST = -2;
    public static int READ_ONLY = 1;
    public static int READ_WRITE = 2;

    /**
     * 判断文件是否可写
     */
    public static int getReadWrite(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return PARAMETER_ERROR;

        File fp = new File(filepath);
        if (!fp.exists()) return FILE_NOT_EXIST;

        if (fp.canWrite())
            return READ_WRITE;
        else
            return READ_ONLY;
    }


    /**
     * 判断文件是否存在
     */
    public static boolean checkFileExist(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;

        File fp = new File(filepath);
        if (!fp.exists()) return false;
        if (!fp.isFile()) return false;

        return true;
    }

    /**
     * 判断目录是否存在
     */
    public static boolean checkFolderExist(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;

        File fp = new File(filepath);
        if (!fp.exists()) return false;
        if (!fp.isDirectory()) return false;

        return true;
    }

    /**
     * 创建目录
     */
    public static boolean createFolder(String folderpath) {
        if (folderpath == null || folderpath.trim().length() == 0) return false;

        File fp = new File(folderpath);
        if (fp.exists()) return false;

        return fp.mkdirs();
    }

    /**
     * 删除文件
     */
    public static boolean delete(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;

        File fp = new File(filepath);
        if (!fp.exists()) return false;

        return fp.delete();
    }

    /**
     * 删除目录
     */
    public static boolean deleteFolder(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;

        File fp = new File(filepath);

        return deleteFolder(fp);
    }

    public static boolean deleteFolder(File file) {
        if (file == null) return false;

        File[] subfile = file.listFiles();
        for (int i = 0; i < subfile.length; i++) {
            if (subfile[i].isDirectory()) {
                if (!deleteFolder(subfile[i])) return false;
            } else if (subfile[i].isFile()) {
                if (!subfile[i].delete()) return false;
            }
        }

        return file.delete();
    }

    /**
     * 读取文件内容
     */
    public static String readTextFile(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return null;
        try {
            String contents = null;
            RandomAccessFile fp = new RandomAccessFile(filepath, "r");

            String strtmp = fp.readLine();
            while (strtmp != null) {
                if (contents == null)
                    contents = strtmp;
                else
                    contents = contents + "\n" + strtmp;
                strtmp = fp.readLine();
            }
            fp.close();
            return contents;
        } catch (Exception e) {
            System.out.println("Read File error:" + e.toString());
            return null;
        }
    }

    /**
     * 读取文件内容
     */
    public static byte[] readFile(String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return null;
        try {
            RandomAccessFile fp = new RandomAccessFile(filepath, "r");
            byte[] contents = new byte[(int) fp.length()];

            fp.read(contents);
            fp.close();
            return contents;
        } catch (Exception e) {
            System.out.println("Read File error:" + e.toString());
            return null;
        }
    }

    /**
     * 读取文件内容
     */
    public static byte[] readFile(File filepath) {
        if (filepath == null) return null;
        try {
            RandomAccessFile fp = new RandomAccessFile(filepath, "r");
            byte[] contents = new byte[(int) fp.length()];

            fp.read(contents);
            fp.close();
            return contents;
        } catch (Exception e) {
            System.out.println("Read File error:" + e.toString());
            return null;
        }
    }

    /**
     * 保存文件
     */
    public static boolean saveFile(String str, String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;
        String strTmp = str;
        if (strTmp == null) strTmp = "";
        try {
            File file = new File(filepath);
            RandomAccessFile rdfile = new RandomAccessFile(file, "rw");

            rdfile.write(strTmp.getBytes());
            rdfile.close();
        } catch (Exception e) {
            System.out.println("save File error:" + e.toString());
            return false;
        }
        return true;
    }

    /**
     * 保存文件
     */
    public static boolean saveFile(byte[] str, String filepath) {
        if (filepath == null || filepath.trim().length() == 0) return false;
        byte[] strTmp = str;
        if (strTmp == null) strTmp = new byte[0];
        try {
            File file = new File(filepath);
            RandomAccessFile rdfile = new RandomAccessFile(file, "rw");

            rdfile.write(strTmp);
            rdfile.close();
        } catch (Exception e) {
            System.out.println("save File error:" + e.toString());
            return false;
        }
        return true;
    }


    /**
     * 复制文件
     */
    public static boolean copyFile(String spath, String tpath) {
        if (spath == null || spath.trim().length() == 0 || tpath == null || tpath.trim().length() == 0)
            return false;
        try {
            File sfile = new File(spath);
            String filename = sfile.getName();

            File tfile = new File(tpath, filename);

            RandomAccessFile rdtfile = new RandomAccessFile(tfile, "rw");

            RandomAccessFile rdsfile = new RandomAccessFile(sfile, "r");
            byte[] contents = new byte[(int) rdsfile.length()];
            rdsfile.read(contents);
            rdsfile.close();

            rdtfile.write(contents);
            rdtfile.close();
            return true;
        } catch (Exception e) {
            System.out.println("Copy file error:" + e.toString());
            return false;
        }
    }

    /**
     * 移动文件
     */
    public static boolean moveFile(String spath, String tpath) {
        if (spath == null || spath.trim().length() == 0 || tpath == null || tpath.trim().length() == 0)
            return false;
        if (copyFile(spath, tpath))
            return delete(spath);
        else
            return false;
    }

    /**
     * 向文件写入文本
     */
    public static boolean writeLineFile(RandomAccessFile file, String lineTxt, boolean isRW) {
        boolean result = true;
        try {
            String str = lineTxt + "\r\n";
            byte[] strTxt = str.getBytes();
            if (isRW) {
                file.write(strTxt);
            }
        } catch (Exception e) {

        }
        return result;
    }

    /**
     * 读取文件内容
     */
    public static ArrayList readTxtFile(String fileName) throws IOException, Exception {
        ArrayList txtList = new ArrayList();
        boolean result = true;
        //检查文件是否存在
        result = FileManage.checkFileExist(fileName);
        //打开文件
        if (result) {
            RandomAccessFile file = new RandomAccessFile(fileName, "rw");
            try {
                String inLine = file.readLine();
                while (inLine != null) {
                    if (!inLine.equals(""))
                        txtList.add(inLine);
                    inLine = file.readLine();
                }
            } catch (Exception e) {
            }
            finally {
                file.close();
            }
        }
        return txtList;
    }

    /**
     * 向文件写入文本
     */
    public static boolean writeTxtFile(String fileName, ArrayList lineTxt) throws IOException, Exception {
        boolean result = true;
        //检查文件是否存在
        result = FileManage.checkFileExist(fileName);
        //存在,先删除文件
        result = (result) ? FileManage.delete(fileName) : true;
        //打开文件
        if (result) {
            RandomAccessFile file = new RandomAccessFile(fileName, "rw");
            try {
                for (int i = 0; i < lineTxt.size(); i++) {
                    //写一行文件内容
                    result = result && FileManage.writeLineFile(file, lineTxt.get(i).toString(), true);
                }
                file.close();
            } catch (Exception e) {
            } finally {
                file.close();
            }
        }
        return result;
    }
}


共0条评论
我要评论