BufferedReader / BufferedWriter Вывод построчно - PullRequest
1 голос
/ 01 марта 2012

У меня следующая проблема: мне нужно ввести файл с 12 строками.Каждая строка состоит из 8 символов.Я должен вывести его в файл с 8 строками и 12 символами.Я должен читать входные данные построчно и выводить каждую строку одновременно.Так что мне не разрешено сначала читать мои входные данные, а после того, как я их прочел, я разделил их на 8 строк по 12 символов.Я использую BufferedReader для чтения моего файла и BufferedWriter для записи в мой файл.Так, например:

Ввод:
12345678
qwertyui
asdfghjk

Вывод:
12345678qwer
tyuiasdfghjk

Редактировать: Этодомашнее задание действительно.

BufferedWriter bufferedWriter = null;
    FileReader fr;

    try {
        fr = new FileReader(new File(directory to file));
        bufferedWriter = new BufferedWriter(new FileWriter(directory to file);

        BufferedReader br = new BufferedReader(fr);
        String line = br.readLine();

        while (line != null) {

            bufferedWriter.write(output);

            bufferedWriter.newLine();

            line = br.readLine();
        }

        br.close();

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

    } finally {
        //Close the BufferedWriter
        try {
            if (bufferedWriter != null) {
                bufferedWriter.flush();
                bufferedWriter.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

Вот так я читаю свой входной файл и записываю в выходной файл, и это код, который у меня есть на данный момент.

Ответы [ 2 ]

6 голосов
/ 01 марта 2012

Используйте метод read класса Reader.(FileReader является потомком Reader).Я не собираюсь реализовывать всю логику, но вот скелет для работы.

FileReader inputStream = null;
FileWriter outputStream = null;

try {
    inputStream =
        new FileReader("inputfile.txt");
    outputStream =
        new FileWriter("outputfile.txt");

    int c;
    int counter = 1;
    while ((c = inputStream.read()) != -1) {
        //keep a counter that will cycle for 12 characters
        //check if c represents a alphabet or number, write it to file else skip 
        //when counter is 12 write a newline
        outputStream.write(c);
    }
} finally {
    if (inputStream != null) {
        inputStream.close();
    }
    if (outputStream != null) {
        outputStream.close();
    }
}
0 голосов
/ 01 марта 2012

Метод чтения позволяет вам контролировать количество символов для чтения:

См. BufferedReader#read.

То же самое с запись

...