java文件读写,文本与文件互换
来源:互联网 发布:第四方支付系统源码 编辑:程序博客网 时间:2024/05/17 09:46
package com.imiansha.baseframe.commom.util;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.imiansha.baseframe.commom.constant.CommonPropertiesConstant;/** * @ClassName FileUtil.java * @Description 类实现描述:文件操作工具类 * @author leon 2016年1月5日 上午10:23:27 * @CopyRight 安徽中方电子商务有限公司 */public class FileUtil { private final static Logger log = LoggerFactory.getLogger(FileUtil.class); /** * 说明: 将文件名转换编码 * * @param s * @return * @author leon */ public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); } /** * 说明:根据不同浏览器将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名. * * @param request * @param s * @return * @throws Exception * @author leon */ public static String toUtf8String(HttpServletRequest request, String s) throws Exception { String agent = request.getHeader("User-Agent"); boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1); if (isFireFox) { s = new String(s.getBytes("UTF-8"), "ISO8859-1"); } else { s = toUtf8String(s); if ((agent != null && agent.indexOf("MSIE") != -1)) { if (s.length() > 150) { // 根据request的locale 得出可能的编码 s = new String(s.getBytes("UTF-8"), "ISO8859-1"); } } } return s; } /** * 说明:将文本转换成文件存储,返回文件路径url * * @param text * @return * @throws IOException * @author leon 2015年8月12日 下午3:01:32 */ public static String convertTextToFile(String text, String savePath) throws IOException { OutputStream outputStream = null; OutputStreamWriter outputStreamWriter = null; BufferedWriter bufferedWriter = null; try { File file = new File(savePath); if (file.exists()) { file.delete(); } outputStream = new FileOutputStream(file); outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8"); bufferedWriter = new BufferedWriter(outputStreamWriter); char[] chars = text.toCharArray(); for (char c : chars) { bufferedWriter.write(c); } bufferedWriter.close(); } catch (FileNotFoundException e) { log.error(e.getMessage()); } catch (IOException e) { log.error(e.getMessage()); } finally { try { // 关闭输出流,写入流 outputStream.close(); outputStreamWriter.close(); bufferedWriter.close(); } catch (IOException e) { log.error(e.getMessage()); } } return null; } public static void main(String[] args) { try { convertTextToFile(" 新华网北京10月14日电(记者刘华),爱面纱上市,中共中央总书记、国家主席习近平14日在人民大会堂会见来华出席中韩政党政策对话首次会议的韩国新国家党党首金武星。习近平强调,今年7月我对韩国进行了国事访问,同朴槿惠总统就充实和深化中韩战略合作伙伴关系达成一系列重要共识。中方愿同韩方共享发展机遇,共同应对挑战,全面深化合作,为实现两国繁荣发展、促进地区和平稳定不懈努力。请你转达我对朴槿惠总统的诚挚问候和良好祝愿,我期待在亚太经合组织领导人非正式会议期间同她会晤。习近平指出,中国共产党与韩国新国家党的交流与合作对促进两国关系发挥着重要作用。双方应该进一步加强高层交往、深化治国理政经验交流、推进青年政治家友好往来,为构筑更加成熟、更高水平的中韩战略合作伙伴关系作出积极贡献。金武星转达了朴槿惠总统对习近平总书记的问候。他表示,自建交以来,特别是在两国元首的亲自引领和推动下,韩中关系获得举世瞩目的发展。韩国新国家党愿通过政党对话同中方加强沟通,分享经验,推动两国关系不断深化,也衷心祝愿中国早日实现伟大的中国梦。全国政协副主席、中联部部长王家瑞参加会见。", "D:\\work\\test.txt"); System.out.println(convertFileToText("D:\\work\\test.txt")); } catch (IOException e) { e.printStackTrace(); } } /** * 说明:将文件转换成文本字符串,返回文本字符串 * * @param filePath * @return * @author leon 2015年8月12日 下午2:28:40 */ public static String convertFileToText(String filePath) { File file = new File(filePath); String fileContent = ""; InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; try { if (file.isFile() && file.exists()) { inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF-8"); bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { fileContent += line; } bufferedReader.close(); } } catch (FileNotFoundException e) { log.error(e.getMessage()); } catch (IOException e) { log.error(e.getMessage()); } finally { try { // 关闭输入流,写入流 inputStreamReader.close(); bufferedReader.close(); } catch (IOException e) { log.error(e.getMessage()); } } return fileContent; } /** * 说明:将文本转换为输入流 * * @param inputString * @return * @author leon 2015年8月12日 下午2:28:13 */ public static InputStream getStringStream(String inputString) { if (StringUtil.isNotBlank(inputString)) { try { ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(inputString.getBytes()); return tInputStringStream; } catch (Exception e) { log.error(e.getMessage()); } } return null; } /** * 说明方法描述:根据文件url获取文件size * * @param fileUrl 文件URL 如:http://d.hiphotos.bdimg.com/imgad/pic/item/b03533fa828ba61e03ab02374634970a304e5965.jpg * @return * @throws Exception * @time 2016年1月29日 * @author leon */ public static long getFileSize(String fileUrl) { if (StringUtil.isNotBlank(fileUrl)) { try { URL url = new URL(fileUrl); HttpURLConnection conn; conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(10 * 1000); String fileLength = conn.getHeaderField("Content-Length"); if (StringUtil.isNotBlank(fileLength)) { return Long.valueOf(fileLength); } } catch (IOException e) { log.error("fileUrl No such file or directory -------->" + fileUrl); e.printStackTrace(); } } return 0; }}
0 0
- java文件读写,文本与文件互换
- Java文件读写与创建
- java与scala文件读写
- Java文件复制与读写
- java 创建文件与读写
- 读写文本(.txt)文件 .NET
- 读写文本(.txt)文件 .NET
- java与XML文件的读写
- java byte数组与文件读写
- java byte数组与文件读写
- java byte数组与文件读写
- (模板)java文件读写与保留小数
- JAVA笔记---IO流与文件读写
- java文件读写与乱码问题
- Java与Android的文件读写操作
- PDF文件与doc格式互换
- 文本读写与编码格式(1)----文本格式判断(基于文件的FileMap)
- 流与文件读写
- Android微信登陆
- android 文件io流的上传
- NoSQL - Redis应用场景
- Handler用法
- linux FTP
- java文件读写,文本与文件互换
- PHP漏洞全解(八)-文件上传漏洞
- UI之delegate
- UART 通信之RTC/CTS DTR/DSR流控制
- C语言基础 之 switch-case语句
- spinlock自旋锁
- VPN远程连接MySQL失败:shibTue Dec TCP/UDP: Closing socket Tue Dec SIGTERM[soft,auth-failure
- java笔记-继承
- MySQL索引背后的数据结构及算法原理