Как обновить строку новым значением в java? - PullRequest
3 голосов
/ 11 июля 2020

Я новичок в java и работаю над файловыми операциями. У меня есть этот ввод и я изменяю текстовые файлы следующим образом:

input.txt: содержит идентификатор, имя, фамилию

1000:Mark,Peters,3.9

modify.txt: содержит id, oldvalue: newvalue

1000,Mark:John

Я должен выполнить поиск по идентификатору и внести соответствующие изменения. Итак, в файле modify.txt у меня есть идентификатор и старое значение, которое нужно заменить новым значением в input.txt

Итак, после модификации мой вывод строки input.txt должен быть напечатан как:

1000:John,Peters,3.9

Я написал следующий код, но не уверен, как продолжить обновление. Однако мне удалось прочитать файлы, разделить их и получить идентификатор.

public static void main(String[] args) {
        try {
            BufferedReader file1 = new BufferedReader(new FileReader(new File("src/input.txt")));
            BufferedReader file2 = new BufferedReader(new FileReader(new File("src/modify.txt")));
            String str1 = file1.readLine();
            String input[] = str1.split(":");
            int id1 = Integer.parseInt(input[0]);
            System.out.println(str1);
            System.out.println(id1);
            String str2 = file2.readLine();
            String modify[] = str2.split(",");
            int id2 = Integer.parseInt(modify[0]);
            System.out.println(str2);
            System.out.println(id2);
            file1.close();
            file2.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Кто-нибудь может мне с этим помочь? Спасибо. Цените вашу помощь.

1 Ответ

3 голосов
/ 11 июля 2020

Вы можете прочитать строку в файле modify.txt и разделить строку с помощью регулярного выражения [,:]. Он разделит строку на отдельные части, такие как id, firstName и lastName et c.

После прочтения каждой строки в файле input.txt и разделения каждой строки с помощью регулярного выражения [,:]. И сравните первый элемент в списке с элементом в списке, созданном из файла modify.txt. если элемент равен, заменить строку новыми данными из списка, созданного из файла modify.txt.

public static void main(String[] args) {

    try {
        BufferedReader f1 = new BufferedReader(new FileReader(new File("src/input.txt")));
        BufferedReader f2 = new BufferedReader(new FileReader(new File("src/modify.txt")));

        String regex = "[,:]";
        StringBuffer inputBuffer = new StringBuffer();
        String line;
        String[] newLine = f2.readLine().split(regex);

        while ((line = f1.readLine()) != null) {
            String[] data = line.split(regex);
            if (data[0].equals(newLine[0])) {
                line = line.replace(newLine[1], newLine[2]);
            }
            inputBuffer.append(line);
            inputBuffer.append(System.lineSeparator());
        }
        f1.close();
        f2.close();
        FileOutputStream fileOut = new FileOutputStream("src/input.txt");
        fileOut.write(inputBuffer.toString().getBytes());
        fileOut.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...