关于文件File操作的工具类

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;

import org.laya.io.IOUtils;

/**
 * 文件操作工具类
 */
public class FileUtil {
	/**
	 * 创建文件夹
	 * @param path
	 * @return
	 */
	public static File createPath(String path){ 
		File file = new File(path);
		if(!file.exists()){ 
			file.mkdirs();
		}
		return file;
	}
	
	/**
	 * 创建文件
	 * @param path
	 * @param fileName
	 */
	public static File createFile(String path,String fileName){
		File dirs = new File(path);
		if(!dirs.exists()){
			dirs.mkdirs();
		}
		File file = new File(path+File.separator+fileName);
		if(!file.exists()){
			try {
				file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return file;
	}
	
	/**
	 * 判断是否存在
	 * @param path
	 * @param fileName
	 * @return
	 */
	public static boolean isExist(String path,String fileName){
		File dirs = new File(path);
		if(!dirs.exists()){
			return false;
		}
		File file = new File(path+fileName);
		if(!file.exists()){
			return false;
		}
		return true;
	}
	
	/**
	 * 清空文件内容
	 * @param file
	 */
	public static void clear(File file){
		FileWriter fw;
		try {
			fw = new FileWriter(file);
			fw.write("");
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 向文件中写入数据
	 * @param file
	 * @param str
	 */
	public static void write(File file,String str){
		FileWriter fw;
		try {
			fw = new FileWriter(file);
			fw.write(str);
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
     * A方法追加文件:使用RandomAccessFile
     */
    public static void appendMethod(String fileName, String content) {
        try {
            // 打开一个随机访问文件流,按读写方式
            RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
            // 文件长度,字节数
            long fileLength = randomFile.length();
            //将写文件指针移到文件尾。
            randomFile.seek(fileLength);
            randomFile.writeBytes(content);
            randomFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * B方法追加文件:使用FileWriter
     */
    public static void append(File file, String content) {
    	String fileName = file.getAbsolutePath();
        try {
            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
            FileWriter writer = new FileWriter(fileName, true);
            writer.write(content);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 以行为单位读取文件,常用于读面向行的格式化文件
     */
    public static List<String> readFileByLines(File file) {
    	List<String> list = new ArrayList<String>();
        BufferedReader reader = null;
        try {
//            System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
//            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
//                System.out.println("line " + line + ": " + tempString);
            	list.add(tempString);
//            	return tempString;
//                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
        return list;
    }
    
    /**
     * 以行为单位向文件中写入内容
     * @param path
     * @param filename
     * @param list    内容集合
     * @return
     */
    public static File writeFileByLines(File file,List<String> list) {
    	try {
			FileWriter fw= new FileWriter(file);
			BufferedWriter  bw=new BufferedWriter(fw);
			for (String string : list) {
				bw.write(string+"\t\n");
			}
			bw.close();
	        fw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	return file;
    }
    
    /**
    * 复制单个文件
    * @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 path
	 */
	public static void delFiles(File file) {
		if(file==null){
			return;
		}
		try {
			if (file.isDirectory()) {
				String[] chlidren = file.list();
				for (int i = 0; i < chlidren.length; i++) {
					IOUtils.forceDelete(new File(file+File.separator+chlidren[i]));
				}
			}
			IOUtils.forceDelete(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/zhaoraolin/article/details/80006353