将两名读者“合并”成一名具有特殊条件的作家

时间:2015-08-19 07:54:05

标签: java merge bufferedreader filereader

我需要实现该方法 public static void filter(读者邮件,读者组,编写者用户),它将两个数据组合成一个读者。

邮件文件:

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

我不知道如何做到这一点。哪种方法检查这个特殊符号?

1 个答案:

答案 0 :(得分:1)

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

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