从文本文件初始化对象数组

时间:2014-10-04 13:54:07

标签: java arrays file text bufferedreader

我有一个程序,我需要存储用户信息,并添加用户。为了使其持久化,程序读取所有用户数据并在启动时初始化一组用户,然后在关闭之前保存信息。这是我的用户类:

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

为每个用户。 问题是什么?我的系统是否可行,或者我是否需要完全改变程序的基础?

(编辑更改标签)

2 个答案:

答案 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扩展名。