1

次の問題があります。12行のファイルを入力する必要があります。各行は8文字で構成されています。8行12文字のファイルで出力する必要があります。入力を1行ずつ読み取り、各行を同時に出力する必要があります。したがって、最初に入力を読み取ることは許可されていません。読み取った後は、12文字で8行にカットされます。私は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();
        }
    }

これが私の入力ファイルの読み取りと出力ファイルへの書き込みの方法であり、これが現在のコードです。

4

2 に答える 2

6

クラスのreadメソッドを使用します。ReaderFileReaderはの子孫です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();
    }
}
于 2012-03-01T14:20:05.797 に答える
0

readメソッドを使用すると、読み取る文字数を制御できます。

を参照してくださいBufferedReader#read

書き込みと同じ

于 2012-03-01T13:59:56.473 に答える