java 读取下一行_新手求助:.nextLine()可以读取下一行,那读取上一行呢?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

LZ,对于你提的问题,很明显应该使用BufferedReader类是最好的.

"当.nextLine()读取到TMES的时候,让读取的行返回到00000000,4"

BufferedReader有个readLine()方法,就是每次都读一行的意思(当然,首先在写readLine()方法之前要写上一个while循环或者是for循环.).

还有个mark()方法,作用是: 如果你想读完某一行后又想在后续的过程再返回到这一行再重新读,就要用到这个方法了.有一点需要注意的是,假如你是要读第4行,那么在第三行的readLine()方法后,马上写上一个mark()方法,这样就可以在第四行起始位置打上个标记.

还有个reset()方法,其作用是: 回到调用mark()方法时打上的标记处,后面的步骤就看你想如何实现了:

1 如果你想在该标记处继续将后面的字符全部打印出来,就在上一个while语句结束后,再写一个whlie循环.

2 如果你想将该标记处当前行读取出来,或者也读取出后面的某几行,或者是读取后面的某一行,就看你如何写判断语句,说白了,考验的就是你的逻辑思维能力了.

下面写个示例代码,你就明白了.

No.1

00000000,4

----------------

TMES

----------------

TMES

----------------

假如你想程序打印完Tmes后,要重新从00000000,4开始往后读取,就要这样写代码:

BufferedReader br = null;

String str = "";

try {

br = new BufferedReader(new FileReader("src/新建 文本文档 (3).txt"));

while (null != (str = br.readLine())) {

if ("No.1".equals(str)) {

// 当前行读取的内容如果为"No.1",就必须要调用好mark()方法.

// 8192是一个BufferedReader被初始化时的默认缓冲大小.

// mark(8192)方法的意思是: 从当前的标记位置(读取到"No.1"后,下一行的起始位置)

// 处开始计算,然后会在后面调用reset()方法,再调用readlin()方法来接着读取数据.

// 8192就是接着读取要读取字符的长度限制,也就是说如果接着要读取的字符的长度

// 大于8192(从调用mark()方法时的位置开始算,直到调用了reset()方法,

// 或者不再调用read()方法也就是说"while循环退出了",这期间总计读取的数据长度

// 不能大于8192个字节),在调用reset()方法处会抛出一个IO异常.

// 所以mark()方法里的参数,要传一个大一点的整数,可以传入比默认缓冲的数值更大的数.

// 不过如果传入比默认缓冲区的值更大的数,系统就会用这个传入的值的大小,

// 重新为BufferedReadr实例分配一个新的缓冲区,这样会造成不必要的系统资源开销.

// 所以用默认长度的大小: 8192就可以了.

// 关于这些知识,API文档里有详细说明.

br.mark(9999); // 如果你想把文件的内容全部读取出来后,再跳到前面去从上一次打好标记的位置开始读取.

// 就不要写break语句,该怎么写,完全取决于自己的项目需求.

break;

}

} // 将读取指针返回到打上标记时的位置

br.reset(); while (null != (str = br.readLine())) {

// 接着上一次打好标记的位置,继续往下读取数据.

System.out.println(str);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (null != br) {

try {

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值