java读取文本文件内容,我们一般会使用如下经典读取方法,
public static String readFileContent(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
StringBuffer sbf = new StringBuffer();
try {
reader = new BufferedReader(new FileReader(file));
String tempStr;
while ((tempStr = reader.readLine()) != null) {
sbf.append(tempStr);
}
reader.close();
return sbf.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
return sbf.toString();
}
这段代码挺长的,但是那一句都不能省略。
小编看来这段代码太“脏”了。一个逻辑为啥写这么长!一个业务一行代码才优雅,于是引入了Apache Commons IO的IOUtils ,读写相关实例Demo 如下:
1.从流中读取数据
FileInputStream fileInputStream = new FileInputStream(new File("d://demo.txt"));
List<String> list = IOUtils.readLines(fileInputStream, "UTF-8");//只要是InputStream流都可以,比如http响应的流
//直接把流读取为String
String content = IOUtils.toString(inputStream,"UTF-8");
//把流转换为byte数组
byte[] bytes = IOUtils.toByteArray(inputStream);
2.把数据写入流
//把数据写入输出流
IOUtils.write("abc", outputStream);
//把字符串转换流
InputStream inputStream = IOUtils.toInputStream("aaaaaaaaa", "UTF-8");
3.流的相互复制
IOUtils.copy(inputstream,outputstream);
IOUtils.copy(inputstream,writer);
IOUtils.copy(inputstream,writer,encoding);
IOUtils.copy(reader,outputstream);
IOUtils.copy(reader,writer);
IOUtils.copy(reader,writer,encoding);
4、流的关闭
try {
return IOUtils.copy(inputStream, outputStream);
} finally {
//优雅的关闭流
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
结语:
本文展示了java读取文本文件内容的经典写法的例子,以及引入apache common io的IOUtils 各种操作的实例Demo ,希望对您有所帮助。