Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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_Text Files_Readline - Fatal编程技术网

Java 如何在找到特定字符串之前丢弃文本文件中的行

Java 如何在找到特定字符串之前丢弃文本文件中的行,java,text-files,readline,Java,Text Files,Readline,该文件以大约200行我不需要的背景信息开始。我试图跳过/忽略这200行,直到找到一个字符串。一旦找到这个字符串,我希望能够继续处理文本文件的其余部分 示例文本文件: (第240行左右是我需要跳过/忽略的所有行) 如果您知道要查找的字符串,可以尝试此操作 if (lineString.startsWith("insert exact string")) { // ... } 那么: boolean found = false; for (String line; (line = in.

该文件以大约200行我不需要的背景信息开始。我试图跳过/忽略这200行,直到找到一个字符串。一旦找到这个字符串,我希望能够继续处理文本文件的其余部分

示例文本文件: (第240行左右是我需要跳过/忽略的所有行)


如果您知道要查找的字符串,可以尝试此操作

if (lineString.startsWith("insert exact string")) {
    // ...
}
那么:

boolean found = false;
for (String line; (line = in.readLine()) != null;) {
    found = found || line.equals(endOfSyllabus); 
    if (found) {
         // process line
    }
}
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.commons.io.FileUtils;
公开课考试{
/**
*@param args
*@抛出异常
*/
公共静态void main(字符串[]args)引发IOException{
列表行=FileUtils.readLines(新文件(“test.txt”);
List avLines=new ArrayList();
布尔有效=假;
用于(字符串行:行){
if(line.trim().equals(“~教学大纲末尾”)){
有效=真;
继续;
}
如果(有效){
添加(“\n”+行);
}
}
System.out.println(avLines.size());
}
}

当前代码有什么问题吗?如果(line==endOfSyllabus)行{:不要在Java中使用
==
来比较
字符串
值,而是使用
字符串#equals
。当到达文件末尾时,
while
循环将无法正常工作。我想问题是如何能够放弃所有这些行,以便继续从文本文件中提取数据。我希望能够循环粗略地处理文本文件中的每一行,但首先我想丢弃教学大纲结尾前的所有行。我尝试了以下方法:。我现在得到了一个越界值,它不会显示文本文件的其余部分。你尝试过我显示的代码吗?你能告诉我你到底想做什么吗?我不明白怎么做从文本文件中提取特定数据。方法有点复杂。例如,我想制作一个测试生成器。问题和答案在文本文件()中。我想解析文本文件并为每个问题创建一个数据库记录。
boolean found = false;
for (String line; (line = in.readLine()) != null;) {
    found = found || line.equals(endOfSyllabus); 
    if (found) {
         // process line
    }
}
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;

public class Test {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        List<String> lines = FileUtils.readLines(new File("test.txt"));
        List<String> avLines = new ArrayList<>();
        boolean valid = false;
        for (String line : lines) {

            if (line.trim().equals("~ End of Syllabus")) {
                valid = true;
                continue;
            }
            if (valid) {
                avLines.add("\n"+line);
            }
        }
        System.out.println(avLines.size());

    }

}