Замена char, который отличается от указанных c значений при чтении файла и записи в новый файл [JAVA] - PullRequest
0 голосов
/ 13 апреля 2020

Мне нужно прочитать текстовый файл, заменить указанные значения c, например (a для 1, b для 2, c для 3), и если появится что-то другое, замените его на ascii_to_char (char_to_ascii (value) +1) ) А затем запишите его в другой файл. Мне удалось найти решение, как бороться с a, b, c, но я понятия не имею, как бороться с чем-то другим. Вот мой код

public void readAndWriteFromfile() throws IOException {
    BufferedReader inputStream = new BufferedReader(new FileReader(testFile));
    File newFile = new File(newTestFile);
    // if File doesnt exists, then create it
    if (!newFile.exists()) {
        newFile.createNewFile();
    }
    FileWriter filewriter = new FileWriter(newFile.getAbsoluteFile());
    BufferedWriter outputStream = new BufferedWriter(filewriter);
    String line;
    while ((line = inputStream.readLine()) != null) {
        outputStream.write(line.replaceAll("a", "1")
                .replaceAll("b", "2")
                .replaceAll("c", "3"));
    }
    outputStream.flush();
    outputStream.close();
    inputStream.close();
}

1 Ответ

0 голосов
/ 13 апреля 2020

Было бы лучше реализовать отдельный метод для кодирования символов, например, так:

    private char encode(char c) {
        if (c >= 'a' && c <= 'c') {
            return (char)('1' + c - 'a');
        }
        return (char) (c + 1);
    }

и вызывать его для каждого символа во входном файле (кроме перевода строки:)):

        String line;
        while ((line = inputStream.readLine()) != null) {
            char[] input = line.toCharArray();
            for (int i = 0; i < input.length; i++) {
                input[i] = encode(input[i]);
            }
            outputStream.write(input);
            outputStream.append('\n');
        }
...