Как удалить строки, которые содержат символ, который начинается после определенной строки и заканчивается символом, найденным в файле в Java? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть файл с abc.txt

abc.txt

hhjj

myhome _ dfdfdsfds fdsfds

dfdfdsfdsd fdsfdsf dfdfdsfdsdfdsfd

dfdsfds

dfdsfds _

хххх JJJ KKKK

Символом после myhome может быть любой символ, это могут быть специальные символы, буквы или цифры. Мне нужно найти символ после myhome и удалить промежуточные строки, которые заканчиваются символом. В моем файле я упомянул как «» после myhome и «».

Вывод должен быть

abc.txt

hhjj

хххх JJJ KKKK

Я пытался читать файл построчно

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadStringFromFileLineByLine {

public static void main(String[] args) {
    try {
        File file = new File("abc.txt");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        StringBuffer stringBuffer = new StringBuffer();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            stringBuffer.append(line);
            stringBuffer.append("\n");
        }
        fileReader.close();
        System.out.println("Contents of file:");
        System.out.println(stringBuffer.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Может ли кто-нибудь помочь ??

1 Ответ

0 голосов
/ 16 мая 2019

Структура

project

App.java

package main;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class App {

    public static void main(String[] args) 
    throws FileNotFoundException, UnsupportedEncodingException {
        App app = new App();
        app.parseFile();
    }

    void parseFile() throws FileNotFoundException, UnsupportedEncodingException {
        // Reading from package main
        File file = new File(getClass().getResource("/main/abc.txt").getFile());
        // If you want to read from HDD, for example :
        // File file = new File("/home/user/abc.txt"); or File file = new File("c:\\abc.txt");
        Scanner input = new Scanner(file);
        StringBuilder sb = new StringBuilder();
        while (input.hasNextLine()) {
            sb.append(input.nextLine());
            sb.append("\n");
        }
        input.close();
        String text = sb.toString();
        text = text
            .replace(
                text.substring(
                    text.indexOf("myhome _"),
                    text.lastIndexOf('_')+1
                ),
                ""
            )
            .replace("\n\n", "\n");
        Path newFile = Paths.get("abc_new.txt");
        Files.write(newFile, Arrays.asList(text.split("\n")), Charset.forName("UTF-8"));
    }
}

Новыйзаписанный файл будет в папке проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...