如何跳过从'#';在用java读取文件时?
在读取文件时,我需要跳过从#开始的行 输入文件 下面是我写的程序 RaviSirI_OQstn1Assignment.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
尝试使用
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);
}
}
}