从本机才c:\user.txt文件中读取所有数据,保存到内存的用户对象数组中,数据内容和格式如下:序号  用户名  密码  说明
1    test1  1234  测试
2     张三   5455  null怎么实现上述要求,请大家指教下

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jacki6】截止到2008-07-23 23:34:22的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    与ObjectInputStream 无关吧,直接读取文件解析字符new 对象放入对象数组。
      

  3.   

    package test;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;public class Test {

    public static final File f = new File("c:/user.txt");

    public static void main(String[] args) {
    if(!f.exists()) {
    System.out.println("该文件不存在!");
    System.exit(-1);
    }
    GetUser gu = new GetUser();
    List<User> l = gu.parseFile(f);
    for(int i=0; i<l.size(); i++) {
    System.out.println(l.get(i).getId()+"  "+l.get(i).getUsername()+"  "+l.get(i).getPwd()+"  "+l.get(i).getDsp());
    }

    }


    }class GetUser {

    public List parseFile(File f) {
    List<User> user = new ArrayList<User>();

    String s = null;
    BufferedReader bf = null;

    try {
    bf = new BufferedReader(new FileReader(f));

    while((s = bf.readLine())!=null) {
    String[] ss = s.split(" ");
    int id = Integer.parseInt(ss[0]);
    User u = new User(id,ss[1],ss[2],ss[3]);
    user.add(u);
    }

    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    return user;
    }


    }class User {
    private int id;
    private String username;
    private String pwd;
    private String dsp;

    public User(int id, String username, String pwd, String dsp) {
    super();
    this.id = id;
    this.username = username;
    this.pwd = pwd;
    this.dsp = dsp;
    }

    public String getDsp() {
    return dsp;
    }
    public void setDsp(String dsp) {
    this.dsp = dsp;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getPwd() {
    return pwd;
    }
    public void setPwd(String pwd) {
    this.pwd = pwd;
    }
    public String getUsername() {
    return username;
    }
    public void setUsername(String username) {
    this.username = username;
    }
    }
      

  4.   

    试了一下,是可以的,不过
    1    test1  1234  测试 
    2    张三  5455  null 
    是用一个空格隔开的
      

  5.   

    ls正解。
    oo思想。。啥也是对象,
    可以再来个排序啥的。那就更意思。
    比如按照姓名排序。
      

  6.   

    用split(“ ”);
    然后判断元素是不是为空。不为空再处理。
    这样行不。
      

  7.   

    刚才试了一下
    如果数据文件是用两个空格隔开数据的话,那么在String[] ss = s.split(" "); 中“”中就用两个空格
    同理,如果是tab隔开的话,中“”中就用tab
    结果是正确的
    其实可以用一个静态量来约定一下是用什么分开数据的
    而且更重要的一点,数据文件中的数据也是应该通过程序输入的,在输入的时候也需要输入分隔的符号,所以应该在两个之间约定一个一样的分隔符
      

  8.   

    刚才试了一下 
    如果数据文件是用两个空格隔开数据的话,那么在String[] ss = s.split(" "); 中“”中就用两个空格 
    同理,如果是tab隔开的话,中“”中就用tab 
    结果是正确的 
    其实可以用一个静态量来约定一下是用什么分开数据的 
    而且更重要的一点,数据文件中的数据也是应该通过程序输入的,在输入的时候也需要输入分隔的符号,所以应该在两个之间约定一个一样的分隔符
      

  9.   

    不错
    很详细
    谢谢
    我刚开始想用ObjectInputStream实现
    但是老是出错
    好像只能读特定字符的文件
    当先执行写文件
    然后再从文件中读出来就可以
    不然老是出错