从文件中删除数组项

时间:2016-04-28 11:21:44

标签: java arrays file

假设我们有一个数组项列表

例如: - a,b,c,d

需要从一个充满数据的文件中删除,我遗漏了一些东西,任何人都可以帮助我实现这一点,提前感谢

public static void rmvFromXML(String strFilePath,
        String strTmpFilePath) throws IOException {

    String currentLine = "";
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");

    BufferedReader reader = new BufferedReader(new FileReader(strFilePath));
    BufferedWriter fileWriter = null;

    fileWriter = new BufferedWriter(new OutputStreamWriter(
            new FileOutputStream(strTmpFilePath)));

    while ((currentLine = reader.readLine()) != null) {

        String trimmedLine = currentLine.trim();
        System.out.println("Trimmed Line    :- " + trimmedLine);

        for (String value : list) {

            System.out.println("Array Value:-   " + value);
            if (trimmedLine.equals(value))

                continue;

            fileWriter.write(trimmedLine + System.getProperty("line.separator"));
        }
    }
    fileWriter.close();
    reader.close();
}

3 个答案:

答案 0 :(得分:1)

你可以使用正则表达式。这样你就不必迭代并检查是否 line包含你的字符串

while ((currentLine = reader.readLine()) != null) {
Pattern removeWords = Pattern.compile("\\b(?:a|b|c|d)\\b\\s*", Pattern.CASE_INSENSITIVE);
Matcher fix = removeWords.matcher(currentLine);
String fixedString = fix.replaceAll("");
}

尝试使用上述方法

input :
abcdefg

output
efg

答案 1 :(得分:1)

您需要在文件的行中替换每次出现的子字符串,因此请将其替换为空格:

public static void rmvFromXML(String strFilePath,
                                  String strTmpFilePath) throws IOException {

        String currentLine = "";
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        BufferedReader reader = new BufferedReader(new FileReader(strFilePath));
        BufferedWriter fileWriter = null;

        fileWriter = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(strTmpFilePath)));

        while ((currentLine = reader.readLine()) != null) {

            String trimmedLine = currentLine.trim();
            System.out.println("Trimmed Line    :- " + trimmedLine);

            for (String value : list) {
                System.out.println("Array Value:-   " + value);
                trimmedLine = trimmedLine.replaceAll(value, "");
            }

            fileWriter.write(trimmedLine + System.getProperty("line.separator"));
        }
        fileWriter.close();
        reader.close();
    }

现在输入:

sdfsdf
sdfsdf
sfsdfs
fa
a
 b
c
asdasdad
   d   
asdasd

我们得到输出:

sfsf
sfsf
sfsfs
f



ss

ss

答案 2 :(得分:0)

替换:

    for (String value : list) {

        System.out.println("Array Value:-   " + value);
        if (trimmedLine.equals(value))

            continue;

        fileWriter.write(trimmedLine + System.getProperty("line.separator"));
    }

由:

    bool found=false:
    for (String value : list) {

        System.out.println("Array Value:-   " + value);
        if (trimmedLine.equals(value))

            found=true;
    }
    if(!found)
        fileWriter.write(trimmedLine + System.getProperty("line.separator"));

fileWriter.write调用应该在&#34; for&#34;之外。循环。