java 文件读写操作应用模块【工具包系列】
来源:互联网 发布:钢雨篷计算软件 编辑:程序博客网 时间:2024/06/11 18:31
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.FileNotFoundException;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.net.URI;import java.net.URL;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 targetFolder * 目标文件夹 * */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.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();URL url = saveFile.toURL();URI uri = saveFile.toURI();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;// 返回文本字符串}}
阅读全文
0 0
- java 文件读写操作应用模块【工具包系列】
- java字符操作模块【工具包系列】
- java EXCEL文件读写工具包POI
- Java+GeoTools工具包+读写shapfile文件
- java文件保存工具类【工具包系列】
- java jxl工具包操作excel文件
- java 读写文件操作
- java读写文件操作
- Java文件读写操作
- JAVA读写文件操作
- java文件读写操作
- Java文件读写操作
- java文件读写操作
- java 文件读写 操作
- java 文件读写操作
- JAVA读写文件操作
- java文件读写操作
- 文件读写操作-Java
- 1、JDK初步与HelloWorld
- JQuery banner轮播
- 内存泄露详解
- 文章标题
- 文章标题
- java 文件读写操作应用模块【工具包系列】
- opencv中IplImage, CvMat, Mat 数据结构的使用简介
- iOS APP 开发流程
- 安卓开发,你必须知道的一些基本第三方
- Eclipse配置Axis2总结
- 斐波那契数列
- ARKit 又添新实例:iPhone 上看 Falcon 9 火箭回收
- kali linux 安装 virtualbox 遇到'modprobe vboxdrv'错误解决方法
- 以太网物理层协议整理-万兆以太网