将两个读者“合并”为一个具有特殊条件的作者

“merge” two readers into one writer with special condition

我需要实现方法 public static void filter(Reader mails, Reader groups, Writer users) 以这样一种方式将来自读者的两条数据组合成一个作者。

邮件文件:

Login;Email
#ivanovjti;ivanov@mail.com
petrovjti;petrov@google.com
obamajti;obama@yahoo.com

和群组文件:

Login;Group
ivanovjti;Java1
petrovjti;Java2
obamajti;Java1

合并的结果应该是这样的:

Login;Email;Group
#ivanovjti;ivanov@mail.com;Java1
petrovjti;petrov@google.com;Java2
obamajti;obama@yahoo.com;Java1

我的代码:

package homework_4;

import java.io.*;

public class Main {

    public static void filter(Reader mails, Reader groups, Writer users) throws IOException {

        BufferedReader brm = new BufferedReader(mails);
        BufferedReader brg = new BufferedReader(groups);
        BufferedWriter bru = new BufferedWriter(users);

        String m = brm.readLine();
        String g = brg.readLine();

        while (m != null && g != null) {
            bru.write(m + ";" + g.split(";")[1] + "\n");
            m = brm.readLine();
            g = brg.readLine();
        }
        bru.flush();
    }

    public static void main(String[] args) throws FileNotFoundException, IOException{

            FileReader frm = new FileReader("homework_4_1.txt");
            FileReader frg = new FileReader("homework_4_2.txt");
            FileWriter fwu = new FileWriter("homework_4_3.txt");

            filter(frm, frg, fwu);

            frm.close();
            frg.close();
            fwu.close();

    }

}

但我有一个条件。如果文件邮件或文件组包含符号“#”,合并结果应如下所示:

Login;Email;Group
petrovjti;petrov@google.com;Java2
obamajti;obama@yahoo.com;Java1

我不知道怎么做。哪个方法检查这个特殊符号?

您有 Strings 个变量,其中包含文件的每一行。正如我在您的示例中看到的那样,您需要的是忽略包含 # 符号 的行。 (如果我错了请纠正我)。

String m = brm.readLine();   
String g = brg.readLine();

while (m != null && g != null) {
    // check if contains # and write otherwise
    if(!m.contains("#") && !g.contains("#")) {
        bru.write(m + ";" + g.split(";")[1] + "\n");
    }
    m = brm.readLine();
    g = brg.readLine();
}