java如何读取指定行的数据

java如何读取指定行的数据,第1张

读取文件指定行要用到类LineNumberReader,它是跟踪行号的缓冲字符输入流,其基氏谈凳类是BufferedReader。。它有两个构造方法:

public LineNumberReader(Reader in)

使用默认输侍姿入缓冲区的大小创建新的行编号 reader,默认输入缓冲区歼旅的大小为8096个字节。

pulbic LineNumberReader(Reader in,int size)

创建新的行编号 reader,将字符读入给定大小的缓冲区。

import java.io.File

import java.io.FileReader

import java.io.IOException

import java.io.LineNumberReader

public class ReadSelectedLine{

/**

* 读取文件指定行。

*/

public static void main(String[] args) throws IOException {

// 指定读取的行号

int lineNumber = 12

// 读取文件

File sourceFile = new

File("src/Chapter08/ReadSelectedLine.java")

// 读取指定的行

readAppointedLineNumber(sourceFile, lineNumber)

// 获取文件的内容的总行数

System.out.println(getTotalLines(sourceFile))

}

// 读取文件指定行。

static void readAppointedLineNumber(File sourceFile, int lineNumber)

throws IOException {

FileReader in = new FileReader(sourceFile)

LineNumberReader reader = new LineNumberReader(in)

String s = reader.readLine()

if (lineNumber <0 || lineNumber >getTotalLines(sourceFile)) {

System.out.println("不在文件的行数范围之内。")

}

{

while (s != null) {

System.out.println("当前行号为:"

+ reader.getLineNumber())

reader.setLineNumber(20)

System.out.println("更改后行号为:"

+ reader.getLineNumber())

System.out.println(s)

System.exit(0)

s = reader.readLine()

}

}

reader.close()

in.close()

}

// 文件内容的总行数。

static int getTotalLines(File file) throws IOException {

FileReader in = new FileReader(file)

LineNumberReader reader = new LineNumberReader(in)

String s = reader.readLine()

int lines = 0

while (s != null) {

lines++

s = reader.readLine()

}

reader.close()

in.close()

return lines

}

}

理论上说是不能直接得到的,因为哪局肆李轿最原始的IO流是字节流也就是说一次只能读到一个字节的数据,这里面根本就没有行数之说;此外,即使使用缓冲流最多也就是每次读进一行已,如果想要得到文件的行数就得等文件读完才知道。腊族


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12248423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存