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流是字节流也就是说一次只能读到一个字节的数据,这里面根本就没有行数之说;此外,即使使用缓冲流最多也就是每次读进一行已,如果想要得到文件的行数就得等文件读完才知道。腊族欢迎分享,转载请注明来源:内存溢出
评论列表(0条)