如何删除Java文件中以特定字符串开头和结尾的特定行? [英] How to delete the specific lines that starts and ends with specific string in a file in java?

查看:116
本文介绍了如何删除Java文件中以特定字符串开头和结尾的特定行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个文件abc.txt,其行为

I have a file abc.txt that has lines as

Ethernet 1/1 

Ethernet 1/2

interface 3

abs_mod_
jjj
kkkk
ll
abs_mod_

interface 6

interface 7

我想删除abs_mod_之间的行以及以abs_mod_开头的行

I want to delete the lines in between abs_mod_ and also lines starting with abs_mod_

最终输出应为

Ethernet 1/1

Ethernet 1/2

interface 3

interface 6

interface 7

我尝试了如何逐行读取文件.

I have tried how to read the file line by line.

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();
        }
    }
}

推荐答案

一种幼稚的方法:

A naive approach:

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;
            boolean flag = true;
            while ((line = bufferedReader.readLine()) != null) {
                if(line.contains("abs_mod_")){
                    if(flag)    flag = false;
                    else        flag = true;
                }else if(flag){
                    stringBuffer.append(line);
                    stringBuffer.append("\n");
                }
            }
            fileReader.close();
            System.out.println("Contents of file:");
            System.out.println(stringBuffer.toString().replace("\n\n\n", "\n\n"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用正则表达式:

Using regex:

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()
                .trim()
                .replaceAll("[\\n]+(abs_mod_)(\\s|\\S)*(abs_mod_)", "")
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这篇关于如何删除Java文件中以特定字符串开头和结尾的特定行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆