如何跳过从'#';在用java读取文件时?

如何跳过从'#';在用java读取文件时?,java,file-io,Java,File Io,在读取文件时,我需要跳过从#开始的行 输入文件 下面是我写的程序 RaviSirI_OQstn1Assignment.java 尝试使用BufferedReader,这样您就可以一次读取一行文件: try(BufferedReader reader = Files.newBufferedReader(Paths.get("F:\\javaAdarsh\\input.txt")) ) { String line = ""; while ((line = reader.r

在读取文件时,我需要跳过从#开始的行

输入文件 下面是我写的程序

RaviSirI_OQstn1Assignment.java
尝试使用
BufferedReader
,这样您就可以一次读取一行文件:

try(BufferedReader reader = 
    Files.newBufferedReader(Paths.get("F:\\javaAdarsh\\input.txt"))
) {

    String line = "";
    while ((line = reader.readLine()) != null) {
        if (!line.matches("#.*")) {
            System.out.println(line);
        }
    }
}

当逐行读取时,我们只需要应用正则表达式模式
^#.*
来捕获任何以

开头的行,当遇到
字符时跳过8个字节。这不是你想要的。你想要的是下一行。因此,在找不到新行字符时,应该循环。但这种方法相当麻烦。
事实上,您没有使用正确的API
BufferedReader.readLine()
会更简单。

它返回一个表示行内容的字符串。因此,您只需将它的第一个字符与
#
进行比较,就可以知道是否需要忽略行内容

你的问题是?第一,我会改成一个
BufferedReader
,因为我读的是文本而不是二进制/字节;第二,我会读行,
BuffredReader
应该有这样的方法;第三,我会使用
startsWith
方法(或者只检查行的第一个字符),这样您就可以在不做任何尝试的情况下请求准备好的代码。对吗?
DataInput…
主要用于读取原语(和修改的UTF-8)<代码>输入流主要用于读取二进制文件(字节流)
…Reader
用于读取文本(字符流)-使用正则表达式测试字符串是否以给定字符开头有点过火Btw:“不推荐使用。此方法无法正确地将字节转换为字符。从JDK 1.1开始,读取文本行的首选方法是通过BufferedReader.readLine()方法。”@更新了CarlosHeuberger的答案。我老了:-)
package mypack;
import java.io.BufferedInputStream;
import java.io.FileInputStream;

public class RaviSirI_OQstn1Assignment {
    public static void main(String ... args) {
        try {
            BufferedInputStream bip = new BufferedInputStream(new FileInputStream("F:\\javaAdarsh\\input.txt"));

            int i;
            long l = 1;
            int p = bip.available();
            System.out.println(p);
            while((i= bip.read())!=-1) {
                 if((char)i=='#') {
                     bip.skip(8);
                 }
                 else
                    System.out.print((char)i);
             }
             System.out.println("");
          }
          catch(Exception e) {
              System.out.println("error");
          }
     }
}
try(BufferedReader reader = 
    Files.newBufferedReader(Paths.get("F:\\javaAdarsh\\input.txt"))
) {

    String line = "";
    while ((line = reader.readLine()) != null) {
        if (!line.matches("#.*")) {
            System.out.println(line);
        }
    }
}