我有一个程序,我需要存储用户信息,并添加用户。为了使其持久化,程序读取所有用户数据并在启动时初始化一组用户,然后在关闭之前保存信息。这是我的用户类:
class User {
String name;
int val = -1;
int oldVal = -1;
public User(String n){
try{
BufferedReader dataReader = new BufferedReader(new FileReader("/Users/" + n));
name = dataReader.readLine();
val = Integer.parseInt(dataReader.readLine());
oldVal = Integer.parseInt(dataReader.readLine());
} catch (Exception e){}
}
此类从/ users中的文件读取,格式为name.txt
John
90
100
我的核心课程如下:
import java.io.BufferedReader;
import java.io.FileReader;
class Core{
public static void main (String[] args){
int numUsers = -1;
BufferedReader nameReader = null;
User[] users = null;
try {
nameReader = new BufferedReader(new FileReader("Users/users.txt"));
numUsers = Integer.parseInt(nameReader.readLine());
users = new User[numUsers];
for (int i = 0; i < numUsers; i++){
users[i] = new User(nameReader.readLine());
}
} catch (Exception e) {
System.out.println("Something went wrong. Aborting!");
System.exit(1);
}
for (int i = 0; i < numUsers; i++){
System.out.println("User " + users[i].getName() + "\n Val:" + users[i].getVal() + "\n oldVal: " + users[i].getOldVal());
}
}
}
但是运行核心回报:
User null
val: -1
oldVal: -1
为每个用户。 问题是什么?我的系统是否可行,或者我是否需要完全改变程序的基础?
(编辑更改标签)
答案 0 :(得分:1)
您的核心是在相对路径Users/
中查找文件。你的另一个班级正在寻找绝对路径/Users/
。
您的文字说明表明您需要/users/
(小写)。在某些系统上,这将再次不同。
我怀疑这是导致问题的原因,或至少是其中的一部分。
看起来你真正想要的是一个相对路径,最后是.txt
:
BufferedReader dataReader = new BufferedReader(new FileReader("Users/" + n + ".txt"));
答案 1 :(得分:0)
BufferedReader dataReader = new BufferedReader(new FileReader("/Users/" + n));
应该是
BufferedReader dataReader = new BufferedReader(new FileReader("Users/" + n + ".txt"));
请注意删除额外的正斜杠并添加.txt扩展名。