在工作和学习中,有时候会有一些场景,代码需要配合读取文件来执行,比如:读文件数据,来进行计算、组装sql、更新操作......
下面我们来讨论下,在java中按行读取文件文件内容的方式有哪些?
一、前提说明
- 读取的文件内容

- 测试代码
system.out.println("总行数:" + ids.size());
for (int i = 0; i < ids.size(); i++) {
// system.out.println("第" + (i + 1) + "行内容:" + ids.get(i));
string content = ids.get(i);
system.out.println(string.format("第%d行内容:%s,内容长度:%d", i + 1, content, content.length()));
}
- 输出结果
总行数:5 第1行内容:1,内容长度:1 第2行内容:2,内容长度:1 第3行内容:3,内容长度:1 第4行内容:4,内容长度:1 第5行内容:5,内容长度:1
二、方法
1、java.io.fileinputstream
file file = new file("g:\\ids.txt");
list<string> ids = new arraylist<>();
try (fileinputstream fileinputstream = new fileinputstream(file);) {
int size = fileinputstream.available();
for (int i = 0; i < size; i++) {
ids.add((char) fileinputstream.read() + "");
}
} catch (ioexception e) {
e.printstacktrace();
}
总行数:13 第1行内容:1,内容长度:1 ,内容长度:1 第3行内容: ,内容长度:1 第4行内容:2,内容长度:1 ,内容长度:1 第6行内容: ,内容长度:1 第7行内容:3,内容长度:1 ,内容长度:1 第9行内容: ,内容长度:1 第10行内容:4,内容长度:1 ,内容长度:1 第12行内容: ,内容长度:1 第13行内容:5,内容长度:1
分析:虽然读取1个字符,但每行后面可能还有隐藏换行符`
总结:适用于按照字符一个个读取的场景
2、java.io.bufferedreader
filereader就能用于读取文本文件,使用bufferedreader能提高读取文件的性能
file file = new file("g:\\ids.txt");
list<string> ids = new arraylist<>();
try (bufferedreader bufferedreader = new bufferedreader(new filereader(file));) {
// java8以后
ids = bufferedreader.lines().collect(collectors.tolist());
// java7以前
// string str = null;
// while ((str = bufferedreader.readline()) != null) {
// ids.add(str);
// }
} catch (ioexception e) {
e.printstacktrace();
}
3、java.nio.file.files
三种写法都可以,直接就可以返回一个list
// java7以后
list<string> ids = files.readalllines(new file("g:\\ids.txt").topath());
// java7以后
list<string> ids = files.readalllines(paths.get("g:\\ids.txt"));
// java8以后
list<string> ids = files.lines(paths.get("g:\\ids.txt")).collect(collectors.tolist());
4、org.apache.commons.io.fileutils
apache commons中的工具类
list<string> ids = fileutils.readlines(new file("g:\\ids.txt"));
5、java.util.scanner
scanner类可以用来获取控制台的输入,也可以用来对文件的读取。
之所以可以这样,是因为提供了构造函数重载
list<string> ids = new arraylist<>();
try (scanner sc = new scanner(new file("g:\\ids.txt"))) {
while (sc.hasnextline()){
ids.add(sc.nextline());
}
} catch (ioexception e) {
e.printstacktrace();
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论