文件与字符串相互转化的工具类

package com.at21.server.collectmanage.monitor.kompsat.utils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
* <p>
* Title: StringFileToolkit.java
* </p>
* <p>
* Description: 字符串与文件相互转换工具
* </p>
* <p>
* Copyright: Copyright (c) 2012
* </p>
* <p>
* Company: 21at
* </p>
*
* @author 高宇
* @createdate 2012-11-15下午2:48:02
* @version 1.0
*/

public class StringFileToolkit {

private static Log log = LogFactory.getLog(StringFileToolkit.class);

/**
* 读取文件为一个内存字符串
*
* @param is 文件流
* @return 文件内容的字符串
*/
public static String file2String(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sBuilder = new StringBuilder();
String line = null;
try {
while ((line=reader.readLine())!=null) {
sBuilder.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return sBuilder.toString();
}
/**
* 读取文件为一个内存字符串,保持文件原有的换行格式
*
* @param file 文件对象
* @param charset 文件字符集编码
* @return 文件内容的字符串
*/
public static String file2String(File file, String charset) {
StringBuffer sb = new StringBuffer();
try {
LineNumberReader reader = new LineNumberReader(new BufferedReader(
new InputStreamReader(new FileInputStream(file), charset)));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append(System.getProperty("line.separator"));
}
} catch (UnsupportedEncodingException e) {
log.error("读取文件为一个内存字符串失败,失败原因是使用了不支持的字符编码" + charset, e);
} catch (FileNotFoundException e) {
log.error("读取文件为一个内存字符串失败,失败原因所给的文件" + file + "不存在!", e);
} catch (IOException e) {
log.error("读取文件为一个内存字符串失败,失败原因是读取文件异常!", e);
}
return sb.toString();
}

/**
* 将字符串存储为一个文件,当文件不存在时候,自动创建该文件,当文件已存在时候,重写文件的内容,特定情况下,还与操作系统的权限有关。
*
* @param text 字符串
* @param distFile 存储的目标文件
* @return 当存储正确无误时返回true,否则返回false
*/
public static boolean string2File(String text, File distFile) {
if (!distFile.getParentFile().exists())
distFile.getParentFile().mkdirs();
BufferedReader br = null;
BufferedWriter bw = null;
boolean flag = true;
try {
br = new BufferedReader(new StringReader(text));
bw = new BufferedWriter(new FileWriter(distFile));
char buf[] = new char[1024 * 64]; // 字符缓冲区
int len;
while ((len = br.read(buf)) != -1) {
bw.write(buf, 0, len);
}
bw.flush();
br.close();
bw.close();
} catch (IOException e) {
flag = false;
log.error("将字符串写入文件发生异常!", e);
}
return flag;
}
}

猜你喜欢

转载自blog.csdn.net/qq_26629277/article/details/78081030