Java字符串與文件的互轉
Java中有時候需要讀取一個文本類的文件,將其轉換爲字符串,然後做進一步處理。Java中沒有現成的API方法。
一、字符串轉換爲文件
/**
* 將字符串寫入指定文件(當指定的父路徑中文件夾不存在時,會最大限度去創建,以保證保存成功!)
*
* @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));
char buf[] = new char[1024]; //字符緩衝區
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
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;
}
不想拋出太多的檢查異常,如果你需要捕捉,就拋出吧。
注意:對於文件轉換爲字符串,存在一個編碼問題。上面的file2String方法中,如果你不知道編碼,調用時候方法設爲null即可,此時使用系統默認的編碼類型。
作者:zhangvalue
來源:CSDN
原文:https://blog.csdn.net/zhangvalue/article/details/76025260
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!