java文件保存工具类【工具包系列】

来源:互联网 发布:网络电视机排名 编辑:程序博客网 时间:2024/05/29 18:20
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;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.OutputStream;import java.util.Properties;import java.util.regex.Pattern;import org.nuxeo.common.utils.FileUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 文件读写操作应用模块 */public class FileUtil {private static Logger logger = LoggerFactory.getLogger(FileUtil.class);private static final int BUFFER_SIZE = 16 * 1024;public static final String FILE_RESOURCE_FOLDER_NAME = "fileResource";// 存放资源的文件夹public static final String MEMBER_PIC_FOLDER = "member";public static final String EXPERT_PIC_FOLDER = "expert";/** * 将文件转成字节流 *  * @param fileName *            文件名(完整路径) * @return */public static byte[] getBytes(String fileName) {        if(!(new File(fileName).exists())){            return null;        }try {BufferedInputStream buf = new BufferedInputStream(new FileInputStream(fileName));ByteArrayOutputStream outByte = new ByteArrayOutputStream();byte[] b = new byte[1024];int i = 0;while ((i = buf.read(b, 0, 1024)) != -1) {outByte.write(b, 0, i);}outByte.flush();buf.close();return outByte.toByteArray();} catch (IOException e) {logger.error("Read file error! ", e);return null;}}/** * 将文件转成字节流 *  * @param folder *            文件夹 * @param fileName *            文件名称 * @return */public static byte[] getBytes(String folder, String fileName) {return getBytes(getFolder(folder) + fileName);}/** * 将字节流转成文件 *  * @param sourceBytes *            源字节流 * @param targetFile *            目标文件夹 *  */public static void writeBytes(byte[] sourceBytes, String targetFile) {try {int index = targetFile.lastIndexOf(File.separator);if (index != -1) {FileUtil.makedirs(targetFile.substring(0, index));}FileOutputStream fileOutputStream = new FileOutputStream(targetFile);fileOutputStream.write(sourceBytes);fileOutputStream.flush();fileOutputStream.close();} catch (IOException e) {logger.error("Save file error! ", e.getMessage());e.printStackTrace();}}/** * 创建文件夹,若文件夹已存在,则不创建 *  * @param path *            文件夹路径 */public static void makedirs(String path) {if (!Validators.isEmpty(File.separator)) {File dir = new File(path);if (!dir.exists()) {dir.mkdirs();}}}/** * 将字节流转成文件 *  * @param sourceBytes *            源字节流 * @param targetFolder *            目标文件夹 * @param targetFile *            目标文件名称 */public static void writeBytes(byte[] sourceBytes, String targetFolder,String targetFile) {writeBytes(sourceBytes, getFolder(targetFolder) + targetFile);}private static String getFolder(String folder) {if (Validators.isEmpty(folder)) {folder = File.separator;}if (!File.separator.equals(folder.substring(folder.length() - 1))) {folder = folder + File.separator;}return folder;}/** * 读取roperties文件 *  * @param fileName *            文件名 eg:D:/temp.properties * @return */public static Properties getProperties(String fileName) {Properties result = new Properties();// 属性集合对象FileInputStream fis = null;try {fis = new FileInputStream(fileName);result.load(fis);// 将属性文件流装载到Properties对象中} catch (Exception e) {logger.error("Save file error! " + e.getMessage());e.printStackTrace();} finally {try {if (fis != null) {fis.close();}} catch (IOException e) {logger.error("Save file error! " + e.getMessage());e.printStackTrace();}}return result;}/** * 保存properties 文件 *  * @param savedProp *            需要保存的properties文件 * @param targetFile *            保存文件名 eg:D:/temp.properties */public static void writeProperties(Properties savedProp, String targetFile) {writeProperties(savedProp, null, targetFile);}/** * 保存properties文件 *  * @param savedProp *            需要保存的properties文件 * @param comments *            properties文件注释 * @param targetFile *            保存文件名 eg:D:/temp.properties */public static void writeProperties(Properties savedProp, String comments,String targetFile) {FileOutputStream fout = null;try {fout = new FileOutputStream(targetFile);savedProp.store(fout, comments);} catch (Exception e) {e.printStackTrace();} finally {try {if (fout != null) {fout.close();}} catch (IOException e) {e.printStackTrace();}}}/** * 删除文件 *  * @param pathname * 文件名(包括路径) */public static void deleteFile(String pathname){File file = new File(pathname);if(file.isFile() && file.exists()){file.delete();}else{logger.error("File["+ pathname +"] not exists!");}}/** * 删除文件树 *  * @param dirpath * 文件夹路径 */public static void deleteFileTree(String dirpath){File dir = new File(dirpath);FileUtils.deleteTree(dir);}/** * 将二进制转保存成临时文件 * * @param dirStr *            路径 * @param fileName *            文件名称 * @param bytes *            二进制数组 * @return */public static boolean saveTempFile(String dirStr, String fileName,byte[] bytes) {File dirFile = new File(dirStr);if (!dirFile.exists()) {dirFile.mkdirs();}File saveFile = new File(dirStr + getFileSeparator() + fileName);if(saveFile.exists()){saveFile.delete();}try {FileOutputStream os = new FileOutputStream(dirStr+ getFileSeparator() + fileName);os.write(bytes);os.flush();os.close();return true;} catch (IOException e) {logger.error("IOException",e);}return false;}/** * 文件拷贝 * * @param src *            源文件 * @param dst *            目标文件 * @throws Exception */public static void copy(File src, File dst) throws Exception {try {InputStream in = null;OutputStream out = null;try {in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);out = new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);byte[] buffer = new byte[BUFFER_SIZE];while (in.read(buffer) > 0) {out.write(buffer);}} finally {if (null != in) {in.close();}if (null != out) {out.close();}}} catch (Exception e) {e.printStackTrace();throw e;}}/** * 获取文件扩展名 * * @param fileName *            文件名 * @return */public static String getExtention(String fileName) {int pos = fileName.lastIndexOf(".");return fileName.substring(pos);}/** * 获取文件分隔符 * * @return */public static String getFileSeparator() {return File.separator;}/** * 获取相对路径 * * @param params * 按参数先后位置得到相对路径 * @return */public static String getRelativePath(String... params){if(null != params){String path = "";for(String str : params){path = path + getFileSeparator() + str;}return path;}return null;}/** * 把一个字符串写到指定文件中 * @param str * @param path * @param fileName */    public static void writeStringToFile(String str,String path,String fileName){    try {    File fileDir = new File(path);        if(!fileDir.exists()){        fileDir.mkdirs();        }        File file = new File(path+fileName);    if(!file.exists()){        file.createNewFile();        }FileWriter fw = new FileWriter(file,true);fw.write(str);fw.flush();fw.close();} catch (IOException e) {logger.error("load in file error");}    }        public static String readStringFromFile(String path,String fileName){    StringBuffer fileInString = null;    File fileDir = new File(path);    if(!fileDir.exists()){    return null;    }    File file = new File(path+fileName);    if(!file.exists()){    return null;    }    try {BufferedReader br = new BufferedReader(new FileReader(file));String str = "";while((str = br.readLine()) != null){fileInString = fileInString.append(str);}} catch (Exception e) {logger.error("read file error");return null;}    return fileInString.toString();    }/** * 把含html标签的富文本字符串转化成纯文本 * * @param inputString *            待转换的字符串 * @return */public static String htmlToTxt(String inputString) {String htmlStr = inputString; // 含html标签的字符串String textStr = "";java.util.regex.Pattern p_script;java.util.regex.Matcher m_script;java.util.regex.Pattern p_style;java.util.regex.Matcher m_style;java.util.regex.Pattern p_html;java.util.regex.Matcher m_html;try {String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>// }String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>// }String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);m_script = p_script.matcher(htmlStr);htmlStr = m_script.replaceAll(""); // 过滤script标签p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);m_style = p_style.matcher(htmlStr);htmlStr = m_style.replaceAll(""); // 过滤style标签p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);m_html = p_html.matcher(htmlStr);htmlStr = m_html.replaceAll(""); // 过滤html标签textStr = htmlStr;} catch (Exception e) {System.err.println("Html2Text: " + e.getMessage());}textStr = textStr.replaceAll("&", "&");textStr = textStr.replaceAll("<", "<");textStr = textStr.replaceAll(">", ">");textStr = textStr.replaceAll(""", "\"");return textStr;// 返回文本字符串}}