且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在java中删除文件中的空行

更新时间:2023-02-09 13:17:20

您可以在建议的SkrewEverything之类的方法中使用顺序的空行计数器.

You can work with sequent empty line counter in your method like SkrewEverything suggested.

或使用如下正则表达式进行后处理:

Or make a post-processing with regular expressions like this:

package testingThings;

import java.awt.Desktop;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class EmptyLinesReducer {
     public Path reduceEmptyLines(Path in) throws UnsupportedEncodingException, IOException {
        Path path = Paths.get("text_with_reduced_empty_lines.txt");

        String originalContent = new String(Files.readAllBytes(in), "UTF-8");
        String reducedContent = originalContent.replaceAll("(\r\n){2,}", "\n\n");
        Files.write(path, reducedContent.getBytes());

        return path;
    }


    public Path createFileWithEmptyLines() throws IOException {
        Path path = Paths.get("text_with_multiple_empty_lines.txt");
        PrintWriter out = new PrintWriter(new FileWriter(path.toFile()));

        out.println("line1");

        //empty lines
        out.println();
        out.println();
        out.println();
        out.println("line2");

        //empty lines
        out.println();

        out.println("line3");

        //empty lines
        out.println();
        out.println();
        out.println();
        out.println();
        out.println();
        out.println("line4");

        out.close();

        return path;
    }

    public static void main(String[] args) throws UnsupportedEncodingException, IOException {
        EmptyLinesReducer app = new EmptyLinesReducer();

        Path in = app.createFileWithEmptyLines();
        Path out = app.reduceEmptyLines(in);

        // open the default program for this file
        Desktop.getDesktop().open(out.toFile());

    }

}