【问题标题】:Is there a problem with BufferedWriter in JAVA?JAVA中的BufferedWriter有问题吗?
【发布时间】:2020-03-30 17:33:24
【问题描述】:

我是 OOP 和 Java 编程方面的新人,所以请原谅我。 我编写了一个小类,在其中我尝试使用 BufferedReader 类在文件中写入一个字符串。 一切正常,但文件是“空”,我的意思是我看不到里面的任何东西。

但是可以肯定的是,数据会被存储,因为当我关闭 Eclipse 并再次打开它并运行驱动程序类进行测试时,数据会从文件中恢复。 顺便说一句,我使用 “try with resources” 机制,所以我的文件会自动“关闭”

有人已经遇到过这个问题吗? 我的 Eclipse 版本是 "2018-12"

下面,您有一个带有“writeToFile”方法的小类,我在其中使用了 BufferedReader 类

package parlons.code.tipcalulator.utilities;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileManagement {
    private File tipFile;
    
    public FileManagement(String tipsFileName) {
        this.tipFile = new File("/"+tipsFileName);
        
    }
    public String readFromFile() {
        String tip = null;
        try(BufferedReader bufferedReader = new BufferedReader(new FileReader(this.tipFile))) {
            tip = bufferedReader.readLine();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return tip;
        
    }
    
    public void writeToFile(String decimal) {
        try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(tipFile,true))){
            bufferedWriter.write(decimal);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

您将在下面找到用于测试目的的 Driver 类。

package parlons.code.tipcalulator.utilities;

public class UtilitiesTestDriver {

    public static void main(String[] args) {

        String decimal = "108";
        FileManagement fileManagement = new FileManagement("tipFile.txt");
        fileManagement.writeToFile(decimal);
        System.out.println(fileManagement.readFromFile());
        
    }
}

【问题讨论】:

  • 在我的机器上运行良好。您确定您拥有写入指定文件夹所需的权限吗?我看到您正在尝试写入/tipFile.txt,这会将文件放在根文件夹中(这肯定不是您要写入文件的位置)。
  • 方法getAbsolutePath(),在java.io.File 类中,将显示您的tipFile 的完整路径。

标签: java file bufferedwriter


【解决方案1】:

根据上面 Makoto 的评论,如果您更改为例如,一切正常:

        this.tipFile = new File("./"+tipsFileName);

这将在您的项目的根目录(而不是文件系统的根目录——您可能没有写入权限)中创建 tipFile.txt 文件(包含 108 个文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多