Java:PrintWriter对象不输出文件上的文本?
我试图将某个程序的用户名打印到一个文件中,但PrintWriter没有在我的文件中打印任何内容。我试过stackOverFlow上提到的所有东西,但都没用 用户类Java:PrintWriter对象不输出文件上的文本?,java,file,printwriter,Java,File,Printwriter,我试图将某个程序的用户名打印到一个文件中,但PrintWriter没有在我的文件中打印任何内容。我试过stackOverFlow上提到的所有东西,但都没用 用户类 private File usersListFile; private PrintWriter usersListPrintWriter; private Scanner usersListScanner; 构造函数: Users(){ try { this.usersListFile = new File(
private File usersListFile;
private PrintWriter usersListPrintWriter;
private Scanner usersListScanner;
构造函数:
Users(){
try {
this.usersListFile = new File("D:\\Dairy\\usersList.txt");
if(usersListFile.exists()){
this.usersListPrintWriter = new PrintWriter(new BufferedWriter(new FileWriter("D:\\Dairy\\usersList.txt", true)));
this.usersListScanner = new Scanner("D:\\Dairy\\usersList.txt");
}
else
System.err.println("File does not exist !");
}
catch(Exception e){
System.err.println("Error: Users Class!");
}
}
public void addToUsersList(String username){
usersListPrintWriter.print(username);
}
public static void main(String[] args) {
Users usersObject = new Users();
usersObject.addToUsersList("USERNAME");
}
方法:
Users(){
try {
this.usersListFile = new File("D:\\Dairy\\usersList.txt");
if(usersListFile.exists()){
this.usersListPrintWriter = new PrintWriter(new BufferedWriter(new FileWriter("D:\\Dairy\\usersList.txt", true)));
this.usersListScanner = new Scanner("D:\\Dairy\\usersList.txt");
}
else
System.err.println("File does not exist !");
}
catch(Exception e){
System.err.println("Error: Users Class!");
}
}
public void addToUsersList(String username){
usersListPrintWriter.print(username);
}
public static void main(String[] args) {
Users usersObject = new Users();
usersObject.addToUsersList("USERNAME");
}
主要方法:
Users(){
try {
this.usersListFile = new File("D:\\Dairy\\usersList.txt");
if(usersListFile.exists()){
this.usersListPrintWriter = new PrintWriter(new BufferedWriter(new FileWriter("D:\\Dairy\\usersList.txt", true)));
this.usersListScanner = new Scanner("D:\\Dairy\\usersList.txt");
}
else
System.err.println("File does not exist !");
}
catch(Exception e){
System.err.println("Error: Users Class!");
}
}
public void addToUsersList(String username){
usersListPrintWriter.print(username);
}
public static void main(String[] args) {
Users usersObject = new Users();
usersObject.addToUsersList("USERNAME");
}
然后,当您不再需要printwriter时,调用
close()
usersListPrintWriter
将被缓冲,因此您需要刷新数据(正如Alexandro提到的)
您可能还需要将print
更改为println
,以便在单独的行中输出新添加的用户
您的扫描仪将无法工作,因为您正在扫描给定的字符串,而不是文件内容。改用新扫描仪(this.usersListFile)
您还应该重新使用前一行中的文件
对象:newfilewriter(this.usersListFile,true)
我想说,在同一个文件上同时打开一个编写器
和一个扫描仪
是个坏主意,如果它能工作的话。您可能只需将所有用户加载到内存中,并在打开writer之前关闭扫描仪,除非您有您太棒了!我想知道我的扫描仪出了什么问题,非常感谢@EJP I故意引用了usersListPrintWriter
,而不是PrintWriter
,因为usersListPrintWriter
是通过链中的BufferedWriter
显式创建的。不过,您的意思是正确的,PrinWriter
也是缓冲的,我相信FileWriter
也是缓冲的。将答案改回。在这种情况下,最好在答案中说“缓冲了PrintWriter
和BufferedWriter
”。变量不被缓冲。