簡體   English   中英

試圖寫入.DAT文件,但似乎沒有做任何事情?

[英]Trying to write to a .DAT file but doesn't seem to be doing anything?

我在另一個應用程序中使用了此代碼,以將名稱和高分寫入游戲文件。 現在,我正在使用此代碼從.DAT文件獲取名稱和密碼,並能夠添加新的用戶和密碼。 這是.DAT文件。

michael123
speaker123
katherine123
motor123
username
password

這是代碼。 讀取文件可以正常工作,但是寫入文件完全沒有任何作用,我不確定為什么。

InputStream file;
BufferedReader fileStream;
FileWriter fileWriter;
BufferedWriter fileWrite;
String temp = "";
int users = 0;

public void readUserInfo() throws IOException {
    try {
        file = Board.class.getResourceAsStream("users.DAT");
        fileStream = new BufferedReader(new InputStreamReader(file));
    } catch (Exception e) {
        System.out.println("File not found");
    }
    for (int i = 0; i < users; i++) {

            temp = fileStream.readLine();
            Board.username[i] = temp.trim();
            temp = fileStream.readLine();
            Board.password[i] = temp.trim();

    }
    //Close
    fileStream.close();
    file.close();
}

public void addUser() throws IOException {

    fileWriter = new FileWriter(Board.class.getResource("users.DAT").getFile(),true);
    fileWrite = new BufferedWriter(fileWriter);
    System.out.println("Users : " + users);
    //Skip already created users
   for (int i = 0; i < users; i++) {

        fileWrite.newLine();
        fileWrite.append(Board.username[i]);
        fileWrite.newLine();
        fileWrite.append(Board.password[i]);

    } 
    System.out.println("Adding" + Board.username[users] + " : " + Board.password[users]);
    //Add user  
    fileWrite.newLine();
    fileWrite.append(Board.username[users]);
    fileWrite.newLine();
    fileWrite.append(Board.password[users]);
    //Close
    fileWrite.close();
    System.out.println("Closed fileWrite");
}

我正在使用netbeans。 從中讀取的文件與所有其他類在同一個程序包中。

在閱讀中,您使用以下file = Board.class.getResourceAsStream("users.DAT"); 在您的寫作中,您只需創建一個新File("users.DAT") ,將addUser()更改為

public void addUser() throws IOException {
       fileWriter = new FileWriter(Board.class.getResource("users.DAT").getFile());
       ....
}

編輯 :問題是在寫入過程中您沒有像以前一樣檢索相同的文件。 我會添加這種方法

public File getUserDataFile() {
    return new File(Board.class.getResource("").getFile(), "users.DATA");
}
// then use it like this
new FileWriter(getUserDataFile());
// and
new BufferedReader(new InputStreamReader(getUserDataFile()));

然后在您想要讀寫文件時訪問它。 問題是如果您的文件不存在, Board.class.getResourceAsStream("users.DAT")將返回null。

也許您已經將jar打包了一些狀態的文件users.DAT (一組定義的用戶),當您從類路徑中讀取它們時,您從創建jar的那一刻起只會看到用戶。 然后,編寫將轉到另一個文件。

您也應該從文件系統中讀取用戶。

檢查應用程序的工作目錄,應該有包含添加用戶的正確文件。

同樣,無需在每次添加用戶時一遍又一遍地復制所有用戶,只需在追加模式下打開文件

fileWriter = new FileWriter(new File("users.DAT"), true);

除非您希望能夠刪除用戶,否則在這種情況下,請將所有內容保留在內存中,並在退出程序時或通過保存操作顯式保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM