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

时间:2015-08-14 00:06:10

标签: java file printwriter

我试图将某个程序的用户名打印到文件中,但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");

    }

2 个答案:

答案 0 :(得分:1)

public void addToUsersList(String username){
    usersListPrintWriter.print(username);           
    usersListPrintWriter.flush();
}

然后,当您不再需要您的版画作品时,请致电close()

答案 1 :(得分:1)

usersListPrintWriter是缓冲的,因此您需要刷新数据(正如Alexandro所提到的那样)。

您可能还需要将print更改为println,以便在单独的行中输出新添加的用户。

您的Scanner将无效,因为您正在扫描给定的字符串,而不是文件内容。请改用new Scanner(this.usersListFile)

您还应该重复使用上一行中的File对象:new FileWriter(this.usersListFile, true)

我会说同时在同一个文件上打开WriterScanner是个坏主意,如果它可行的话。您应该只是将所有用户加载到内存中并在打开编写器之前关闭扫描仪,除非您有