Java 如果文件中包含某个字符串,则打印该行
我有一个文件,我想打印出包含字符串Java 如果文件中包含某个字符串,则打印该行,java,string,file,Java,String,File,我有一个文件,我想打印出包含字符串a/C NO: import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import org.apache.commons.io.FileUtils; public class TestFndString { public static void main(String[] args) thro
a/C NO:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import org.apache.commons.io.FileUtils;
public class TestFndString {
public static void main(String[] args) throws IOException {
String str1 = FileUtils.readFileToString(new File("C:/Testing.txt"));
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("C:/Testing.txt")));
lnr.skip(Long.MAX_VALUE);
if (str1.contains("A/C NO:")) {
int num = lnr.getLineNumber();
System.out.println(num);
}
}
}
我的代码将2打印为包含该字符串的行号,而该字符串实际上位于第3行。这是我的文件示例:
jhsdjshdsjhdjs
sdkjsdkjskdjskjd
AjhsdjhsdjhA/C NO: jhsdjhsdjssdlk
很明显,我不相信这可以读取更大的文件或一组文件。执行此操作的最佳方法是什么?行号以0开头。只需在得到的结果上加1(只需查看结果)。或者在创建
LineNumberReader
后调用setLineNumber(1)
:
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("C:/Testing.txt")));
lnr.setLineNumber(1);
行号从0开始。只需在得到的结果上加1(只需查看结果)。或者在创建
LineNumberReader
后调用setLineNumber(1)
:
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("C:/Testing.txt")));
lnr.setLineNumber(1);
与数组索引一样,行号从0开始。用1加1将得到正确的答案
if (str1.contains("A/C NO:")) {
int num = lnr.getLineNumber();
System.out.println( ++num ); // see the increment using ++ ?
}
pre increment操作符会在打印变量之前将
num
增加1,从而获得所需的结果。行编号与数组索引一样,从0开始。用1加1将得到正确的答案
if (str1.contains("A/C NO:")) {
int num = lnr.getLineNumber();
System.out.println( ++num ); // see the increment using ++ ?
}
在打印变量之前,pre increment运算符会将变量的数值增加1,从而获得所需的结果。
LineNumberReader
从0开始,因此预期结果的增量为1
发件人:
默认情况下,行号从0开始。这个数字以每小时递增
读取数据时的每一行终止符,并且可以使用
调用setLineNumber(int)。但是,请注意,setLineNumber(int)不起作用
不实际更改流中的当前位置;只是
更改getLineNumber()将返回的值
因此,有两种方法可以获得预期的结果:
1.
LineNumberReader lnr = new
LineNumberReader(new FileReader(new File("C:/Testing.txt")));
if (str1.contains("A/C NO:")) {
int num = lnr.getLineNumber();
System.out.println(num+1);
}
2. OR you can use setLineNumber(int) as mentioned in java docs.
LineNumberReader
从0开始,因此预期结果递增1
发件人:
默认情况下,行号从0开始。这个数字以每小时递增
读取数据时的每一行终止符,并且可以使用
调用setLineNumber(int)。但是,请注意,setLineNumber(int)不起作用
不实际更改流中的当前位置;只是
更改getLineNumber()将返回的值
因此,有两种方法可以获得预期的结果:
1.
LineNumberReader lnr = new
LineNumberReader(new FileReader(new File("C:/Testing.txt")));
if (str1.contains("A/C NO:")) {
int num = lnr.getLineNumber();
System.out.println(num+1);
}
2. OR you can use setLineNumber(int) as mentioned in java docs.
如果我需要打印出包含字符串A/C NO:?@Stanley这就是我在这里提到的。我是指整行字符串如果我需要打印出包含字符串A/C NO:?@Stanley这就是我在这里提到的。我是指整行字符串