📅  最后修改于: 2023-12-03 14:42:20.660000             🧑  作者: Mango
Java.io.LineNumberInputStream类是InputStream类的子类,它与InputStream类的区别在于,它可以帮助我们对输入流的每一行进行计数。LineNumberInputStream类实现了LineNumberReader类和FilterInputStream类,同时它也是一个装饰器模式的应用。
public LineNumberInputStream(InputStream in)
public int getLineNumber()
public void setLineNumber(int lineNumber)
public int available()
public void close()
public void mark(int readlimit)
public boolean markSupported()
public int read()
public int read(byte[] b, int off, int len)
public void reset()
public long skip(long n)
import java.io.*;
public class LineNumberInputStreamDemo {
public static void main(String[] args) throws IOException {
File file = new File("example.txt");
InputStream inputStream = new FileInputStream(file);
LineNumberInputStream lineNumberInputStream = new LineNumberInputStream(inputStream);
// 读取文件的内容,并统计每一行的行数
int data;
while ((data = lineNumberInputStream.read()) != -1) {
System.out.print((char) data);
if (data == '\n') {
System.out.println("第" + lineNumberInputStream.getLineNumber() + "行");
}
}
lineNumberInputStream.close();
}
}
在以上示例中,我们创建了一个File对象和一个FileInputStream对象,用于读取文件中的内容。接着,我们使用了LineNumberInputStream类来装饰FileInputStream对象,这样我们就能够方便地统计每一行的行数了。在while循环中,我们不断地读取文件中的内容,并输出到控制台上。当读取到换行符时,我们使用getLineNumber()方法获取到行号,并在控制台上输出。最后,我们关闭了LineNumberInputStream对象以及FileInputStream对象,释放资源。
Java.io.LineNumberInputStream类是一个非常实用的类,它可以帮助我们方便地统计输入流中每一行的行数。与LineNumberReader类相比,它的实现更加简单,但是它只能统计每一行的字符数,无法获取到每一行的具体内容。在实际开发中,我们可以根据自己的需求选择使用这两个类中的任意一个。