JAVA 中的 BufferedWriter 有问题吗?
Is there a problem with BufferedWriter in JAVA?
我在 OOP 和 Java 编程方面相当新手,所以请原谅我。
我写了一个小 class,其中我尝试使用 BufferedReader class 在文件中 写入 一个字符串。
一切正常,但文件 “空”,我的意思是我看不到里面的任何东西。
但可以肯定的是,数据已存储,因为当我关闭 Eclipse 并再次打开它并 运行 驱动程序 class 进行测试时,数据将从文件中恢复。
顺便说一句,我使用 "try with resources" 机制,所以我的文件会自动 "closed"。
有人遇到过这个问题吗?
我的 Eclipse 版本是 "2018-12"
下面,您有一个带有“writeToFile”方法的小 class,我在其中使用 BufferedReader class.
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();
}
}
}
您将在下面找到用于测试目的的驱动程序 class。
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());
}
}
根据上面 Makoto 的评论,如果您更改为例如,一切正常:
this.tipFile = new File("./"+tipsFileName);
这将在项目的根目录(与文件系统的根目录相反——您可能没有写权限的地方)创建 tipFile.txt 文件(包含 108)。
我在 OOP 和 Java 编程方面相当新手,所以请原谅我。 我写了一个小 class,其中我尝试使用 BufferedReader class 在文件中 写入 一个字符串。 一切正常,但文件 “空”,我的意思是我看不到里面的任何东西。
但可以肯定的是,数据已存储,因为当我关闭 Eclipse 并再次打开它并 运行 驱动程序 class 进行测试时,数据将从文件中恢复。 顺便说一句,我使用 "try with resources" 机制,所以我的文件会自动 "closed"。
有人遇到过这个问题吗? 我的 Eclipse 版本是 "2018-12"
下面,您有一个带有“writeToFile”方法的小 class,我在其中使用 BufferedReader class.
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();
}
}
}
您将在下面找到用于测试目的的驱动程序 class。
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());
}
}
根据上面 Makoto 的评论,如果您更改为例如,一切正常:
this.tipFile = new File("./"+tipsFileName);
这将在项目的根目录(与文件系统的根目录相反——您可能没有写权限的地方)创建 tipFile.txt 文件(包含 108)。