Java中String与File的互相转换
Posted 李昊轩的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中String与File的互相转换相关的知识,希望对你有一定的参考价值。
今天有这个需求, 记了下来, 算是搬运, 但是也发现了源码的一些缺陷, 遂记载一下结果
字符串转文件
/**
* 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
*
* @param res 原字符串
* @param filePath 文件路径
* @return 成功标记
*/
public static boolean string2File(String res, String filePath) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
File distFile = new File(filePath);
if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs();
bufferedReader = new BufferedReader(new StringReader(res));
bufferedWriter = new BufferedWriter(new FileWriter(distFile));
String len;
while ((len = bufferedReader.readLine()) != null) {
// 这里因为 单引号 ' 有些问题, 做了下面特殊处理
len = len.replace("'", "'");
bufferedWriter.write(len);
bufferedWriter.newLine();
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
flag = false;
return flag;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
文件转字符串
/**
* 文本文件转换为指定编码的字符串
*
* @param file 文本文件
* @param encoding 编码类型
* @return 转换后的字符串
* @throws IOException
*/
public static String file2String(File file, String encoding) {
InputStreamReader reader = null;
StringWriter writer = new StringWriter();
try {
if (encoding == null || "".equals(encoding.trim())) {
reader = new InputStreamReader(new FileInputStream(file), encoding);
} else {
reader = new InputStreamReader(new FileInputStream(file));
}
//将输入流写入输出流
char[] buffer = new char[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = reader.read(buffer))) {
writer.write(buffer, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//返回转换结果
if (writer != null)
return writer.toString();
else return null;
}
简化版本
//将file转化成string
private static String file2String(String filePath) throws IOException {
//对一串字符进行操作
StringBuffer fileData = new StringBuffer();
//
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead = 0;
while ((numRead = reader.read(buf)) != -1) {
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
//缓冲区使用完必须关掉
reader.close();
return fileData.toString();
}
以上是关于Java中String与File的互相转换的主要内容,如果未能解决你的问题,请参考以下文章
Java中double类型与String 类型之间的互相转换
Java中InputStream和Reader之间的转换(字符流和字节流怎么互相转换啊)
c# string与c++ std::string的互相转换