java怎么读取txt文件的行数

java怎么读取txt文件的行数,第1张

import java.io.File

import java.io.RandomAccessFile

/**

 * 读取文档的第二行内容

 *

 * @author 3306 2017年3月21日

 * @see

 * @since 1.0

 */

public class CountLine {

    /*

     * 读取文件绝对路径

     */

    private static String filePath = "d:/cms.sql"

    public static void main(String[] args) {

        long line = readLine(filePath)

        System.out.println(line)

    }

    /**

     * 读取文件行数

     * 

     * @param path

     *            文件路径

     * @return long

     */

    public static long readLine(String path) {

        long index = 0

        try {

            RandomAccessFile file = new RandomAccessFile(new File(path), "r")

            while (null != file.readLine()) {

                index++

            }

            file.close()

        } catch (Exception e) {

            e.printStackTrace()

        }

        return index

    }

}

读取文件指定行要用到类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流是字节流也就是说一次只能读到一个字节的数据,这里面根本就没有行数之说;此外,即使使用缓冲流最多也就是每次读进一行已,如果想要得到文件的行数就得等文件读完才知道。


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

原文地址: https://outofmemory.cn/tougao/8042153.html

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

发表评论

登录后才能评论

评论列表(0条)

保存