【问题标题】:BufferedReader/BufferedWriter Output line by lineBufferedReader/BufferedWriter 逐行输出
【发布时间】:2012-03-20 00:19:46
【问题描述】:

我有以下问题:我需要输入一个12行的文件。每行由 8 个字符组成。我必须将它输出到一个 8 行 12 个字符的文件中。我必须逐行读取输入并同时输出每一行。因此,我不允许先阅读我的输入,然后在阅读后将其插入 8 行 12 个字符。我正在使用 BufferedReader 读取我的文件并使用 BufferedWriter 写入我的文件。举个例子:

输入:
12345678
qwertyui
asdfghjk

输出:
12345678qwer
tyuasdfghjk

编辑:这确实是一项家庭作业。

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();
        }
    }

这就是我读取输入文件并写入输出文件的方式,这就是我目前拥有的代码。

【问题讨论】:

标签: java bufferedreader bufferedwriter


【解决方案1】:

read 方法允许您控制要读取多少个字符:

BufferedReader#read

write相同

【讨论】:

    【解决方案2】:

    使用Reader 类的read 方法。 (FileReaderReader 的后代)。 我不打算实现整个逻辑,但这里有一个可以处理的框架。

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2014-05-14
      • 1970-01-01
      相关资源
      最近更新 更多