Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:PrintWriter对象不输出文件上的文本?_Java_File_Printwriter - Fatal编程技术网

Java:PrintWriter对象不输出文件上的文本?

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(

我试图将某个程序的用户名打印到一个文件中,但PrintWriter没有在我的文件中打印任何内容。我试过stackOverFlow上提到的所有东西,但都没用

用户类

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
”。变量不被缓冲。