封装参考-FileUtils

package com.iit.utils;

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

public class FileUtils {
    /**
     * 从资源文件目录:加载propties文件
     * @param fileName
     * @param charsetName
     * @return
     */
    public static Properties loadProps(String fileName,String charsetName) {
        InputStream in = FileUtils.class.getClassLoader().getResourceAsStream(fileName);
        Properties prop = new Properties();
        //prop.load(res);
        try {
            if(charsetName==null || charsetName.trim().equals("")){
                prop.load(new InputStreamReader(in, "UTF-8"));
            }else{
                prop.load(new InputStreamReader(in, charsetName));
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return prop;
    }


    public static Properties loadProps(String fileName) {
        return loadProps(fileName,"utf-8");
    }


    /**
     * 能够支持将长字符串保存到指定文件中。
     * @param path 文件路径 如: d:/demo/a/b,如果目录不存在则自动创建
     * @param fileName  文件名  如 1.txt
     * @param data  要保存的文本
     */
    public static void save(String path,String fileName,String data) {
        InputStream is = new ByteArrayInputStream(data.getBytes());
        save(path,fileName,is);
    }

    /**
     * 能够支持将大的字节数组保存到指定的文件中。
     * @param path 文件路径 如: d:/demo/a/b,如果目录不存在则自动创建
     * @param fileName  文件名  如 1.bin
     * @param is 要保存的输入流
     */
    public static void save(String path,String fileName,InputStream is) {
        File tempDir = new File(path);
        if (!tempDir.exists()) {
            tempDir.mkdirs();
        }

        String fullFileName = tempDir.getPath() + File.separator + fileName;
        try(
                OutputStream os= new FileOutputStream(fullFileName);
        ){
            byte[] bs = new byte[512];
            int len;
            while ((len = is.read(bs)) != -1) {
                os.write(bs, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }  finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 读取指定文件的内容
     * @param fileName 文件名
     * @param charsetName 编码名称如utf-8或gbk,为""时表示为utf-8
     * @return
     */
    public static String read(String fileName,String charsetName) {
        charsetName = charsetName.equals("")?"utf-8":charsetName;

        File file = new File(fileName);
        StringBuilder sb = new StringBuilder();
        try(
             FileInputStream is = new FileInputStream(file);
             InputStreamReader reader = new InputStreamReader(is, charsetName);
             BufferedReader br = new BufferedReader(reader);
        ){
            String line;
            while((line=br.readLine())!=null){
                sb.append(line);
                sb.append("\n");
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return sb.toString();
    }
}

 

posted @ 2022-06-13 17:14  xiaoyongdata  阅读(37)  评论(0)    收藏  举报