PrintWriter создает пустой файл - PullRequest
0 голосов
/ 31 января 2020

У меня следующая проблема: я хочу прочитать файл и сдвинуть каждую букву вниз на 3 позиции в алфавите. Шифр Цезаря работает правильно, и я могу напечатать его, но всякий раз, когда я пытаюсь передать его в новый файл с PrintWriter, файл остается пустым.

import java.io.IOException;
import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public static char[] encrypt (int offset, char [] charArray) {
        char [] cryptArray = new char [charArray.length];

        for (int i = 0; i < charArray.length; i++) {
            int crypt = (charArray[i] + offset);
            cryptArray[i] = (char) (crypt);
        }
        return cryptArray;
    }

public static void main(String[] args) {
        String text = "";
        StringBuilder convert = new StringBuilder();

        try {
            File file = new File ("C:\\PATH\\file.txt");
            Scanner input = new Scanner (file);

            while (input.hasNextLine()) {
                text = input.nextLine();
                convert = new StringBuilder (text);

                char [] arr = text.toCharArray();
                char [] newArr = encrypt(3, arr);

                for (int i = 0; i < newArr.length; i++) {
                    convert.append(newArr[i]).toString();
                }
            }
            input.close();

        } catch (IOException e) {
            e.printStackTrace(); 
        }
        try {
            // write file
            File outFile = new File ("C:\\PATH\\newfile.txt");
            PrintWriter printer = new PrintWriter (outFile);

            printer.print(convert);
            printer.close();

        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}

1 Ответ

1 голос
/ 31 января 2020

удалить convert = new StringBuilder (text); в вашем l oop. Он перезаписывает ваши данные в предыдущем l oop

...