Java文件获取第一个空行的内容

时间:2017-06-03 15:58:13

标签: java file split

我需要在第一个空行之前分割文件的第一部分,在第一行之后分割第二部分。我怎样才能做到这一点?目前,我使用以下代码阅读文件:

try {
        Scanner scanner = new Scanner(file);
        return scanner.useDelimiter("\\Z").next();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        return "500 - Server Error";
    }

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,请参阅以下代码:

    Scanner scanner = new Scanner(new File("d:\\tmp\\zyr.txt"));
    String delimiter = System.getProperty("line.separator");
    scanner.useDelimiter(delimiter);
    StringBuilder sb=new StringBuilder();
    List<String> result=new ArrayList<>();
    while (scanner.hasNextLine()){
        String line = scanner.nextLine();
        if(!(line.trim().length()==0)){
            sb.append(line).append(delimiter);
        }else if(sb.toString().length()>0) {
            result.add(sb.toString());
            sb.setLength(0);
        }
    }
    if(sb.toString().length()>0) {
        result.add(sb.toString());
    }


    System.out.println("first section:");
    System.out.println(result.get(0));
    System.out.println("second section:");
    System.out.println(result.get(1));

zyr.txt文件就像:

abc
abc
abc

123
123

,您想要的第一部分是result列表中的第一项,第二部分是第二项。

打印结果为:

first section:
abc
abc
abc

second section:
123
123

答案 1 :(得分:0)

这是我的方法:读取整个文件,然后将“\ n \ n”拆分为两部分:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;


public class SplitFileByBlankLine {
    public static void main(String[] args) throws IOException {
        final String blankLine = System.getProperty("line.separator") + "{2}";

        // Read the whole contents, assuming small to moderate size
        String contents = new String(Files.readAllBytes(Paths.get("data.txt")));

        // Split the contents by blank line into two parts
        String[] partition = contents.split(blankLine, 2);

        // Print out for visual verification
        System.out.println(partition[0]); // Text before the blank line
        System.out.println("-----");
        System.out.println(partition[1]); // Text after
    }
}

您似乎正在尝试解析http响应。我是Java的新手,但我认为必须有一个库才能完成任务。