麻烦老师帮我看一下问题出在哪里了?

来源:4-7 自由编程

Michael_2020

2020-03-14 17:40:39

控制台输出没有问题,文件中会在中间多了一个换行呢?

另外,麻烦老师看一下这样写是否合理?谢谢。

package com.yito.hello;

import java.io.*;

public class Hello {

    //写入文件的方法
    public void tranWriteByBuf(File file){
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            bw.write("\r你好吗?\n");
            bw.write("\r我很好!\n");
            bw.flush();
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //从文件读出内容的方法
    public void tranReadByBuf(File file){
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            int n=0;
            while ((n=br.read())!=-1){
                System.out.println(br.readLine());
            }

            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.tranWriteByBuf(new File("hello.txt"));
        hello.tranReadByBuf(new File("hello.txt"));
    }



}


写回答

2回答

好帮手慕小脸

2020-03-14

同学你好,因为写入的数据需要存储到文件中,所以new File对象。如果同学在tranWriteByBuf方法中直接将其写入到hello.txt.那么在main方法中就可以直接调用了。

http://img.mukewang.com/climg/5e6cb8f90956318010110420.jpg

http://img.mukewang.com/climg/5e6cb90609643d3707310382.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

好帮手慕小脸

2020-03-14

同学你好,

1、\r表示回车,写入到文本文件中就是一个回车换行的作用,在进行文本读取时,会默认换行。   

2、去掉\r后,在进行循环判断时,不应该调用read()方法作为判断条件,因为该方法表示读一个字符,然后在进行循环体中,执行br.readLine()为读取一行,因为已经读取第一个字符了,所以会输出为“好吗?”。修改如下:

http://img.mukewang.com/climg/5e6caad009f3676605490196.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~



0
hichael_2020
h 收到,明白了,谢谢老师。 另外还有个问题不太明白,就是我在调用方法是传入File对象,为什么让我new一个呢?在读取的还是要new一个File类对象。 hello.tranWriteByBuf(new File("hello.txt")); hello.tranReadByBuf(new File("hello.txt")); 而不是直接使用相关路径?
h020-03-14
共1条回复

0 学习 · 11489 问题

查看课程