栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java:如何使用bufferedreader读取特定行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java:如何使用bufferedreader读取特定行

我建议使用java.io.LineNumberReader。它扩展了BufferedReader,您可以使用它

LineNumberReader.getLineNumber();
来获取当前行号

您还可以使用Java 7

java.nio.file.Files.readAllLines
List<String>
如果适合您,它将返回a

注意:

1)比StringBuffer更喜欢StringBuilder,StringBuffer只是一个遗留类

2)

contents.append(System.getProperty("line.separator"))
没有好看的使用
contents.append(File.separator)
,而不是

3)捕获异常似乎无关紧要,我也建议更改您的代码为

public static String getContents(File aFile) throws IOException {    BufferedReader rdr = new BufferedReader(new FileReader("aFile"));    try {        StringBuilder sb = new StringBuilder();        // read your lines        return sb.toString();    } finally {        rdr.close();    }}

现在我认为代码看起来更清晰。如果您使用的是Java 7,请使用try-with-resources

    try (BufferedReader rdr = new BufferedReader(new FileReader("aFile"))) {        StringBuilder sb = new StringBuilder();        // read your lines        return sb.toString();    }

所以最后你的代码看起来像

public static String[] getContents(File aFile) throws IOException {    try (LineNumberReader rdr = new LineNumberReader(new FileReader(aFile))) {        StringBuilder sb1 = new StringBuilder();        StringBuilder sb2 = new StringBuilder();        for (String line = null; (line = rdr.readLine()) != null;) { if (rdr.getLineNumber() >= 1500) {     sb2.append(line).append(File.pathSeparatorChar); } else if (rdr.getLineNumber() > 500) {     sb1.append(line).append(File.pathSeparatorChar); }        }        return new String[] { sb1.toString(), sb2.toString() };    }}

请注意,它返回2个字符串500-1499和1500-2000



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号