看书的时候看到字符流这一节中,看到一些针对简单需求的实用方法,在此记录。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class TextFileUtils {
//复制Reader到Writer
public static void copy(final Reader input, final Writer output)
throws IOException {
char[] buf = new char[4096];
int charsRead = 0;
while ((charsRead = input.read(buf)) != -1) {
output.write(buf, 0, charsRead);
}
}
//将文件全部内容读入到一个字符串,参数为文件名和编码类型
public static String readFileToString(final String fileName,
final String encoding) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName), encoding));
StringWriter writer = new StringWriter();
copy(reader, writer);
return writer.toString();
} finally {
if (reader != null) {
reader.close();
}
}
}
//将字符串写入文件,参数为文件名、字符串内容和编码类型。
public static void writeStringToFile(final String fileName,
final String data, final String encoding) throws IOException {
Writer writer = null;
try {
writer = new OutputStreamWriter(new FileOutputStream(fileName),
encoding);
writer.write(data);
} finally {
if (writer != null) {
writer.close();
}
}
}
//按照行将多行数据写入到文件,参数为文件名、编码类型。行的集合
public static void writeLines(final String fileName, final String encoding,
final Collection<?> lines) throws IOException {
PrintWriter writer = null;
try {
writer = new PrintWriter(fileName, encoding);
for (Object line : lines) {
writer.println(line);
}
} finally {
if (writer != null) {
writer.close();
}
}
}
//按行将文件内容读到一个列表中,参数为文件名、编码类型
public static List<String> readLines(final String fileName,
final String encoding) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName), encoding));
List<String> list = new ArrayList<>();
String line = reader.readLine();
while (line != null) {
list.add(line);
line = reader.readLine();
}
return list;
} finally {
if (reader != null) {
reader.close();
}
}
}
/**
* @param args
* 可自己在此处进行简单的测试和理解
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}