我有一个程序需要存储用户信息并添加用户。为了使其持久化,程序会读取所有用户数据并在启动时初始化用户数组,然后在关闭之前保存信息。这是我的用户类别:
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
对于每个用户。 问题是什么?我制作的系统是否可行,或者我是否需要完全改变我的程序的基础?
(编辑更改标签)
最佳答案
您的核心正在相对路径Users/
中查找文件。您的另一个类正在绝对路径 /Users/
中查找。
您的文字描述表明您需要 /users/
(小写)。在某些系统上,这又会有所不同。
我怀疑这是导致问题的原因,或者至少是部分问题的原因。
看起来你真正想要的是一个相对路径,以及末尾的 .txt
:
BufferedReader dataReader = new BufferedReader(new FileReader("Users/" + n + ".txt"));
关于java - 从文本文件初始化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193490/