[英]Spring Boot JpaRepository save call doesn't seem to be doing anything
[英]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.