Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果文件中包含某个字符串,则打印该行_Java_String_File - Fatal编程技术网

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这就是我在这里提到的。我是指整行字符串