【发布时间】: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