读取和写入arraylist到文本文件

时间:2014-09-26 16:23:17

标签: java arraylist

我在阅读和编写arraylist到文本文件时遇到问题。特别是阅读。我尝试做的是从文本文件中读取并将其传输到数组列表。之后我会编辑列表并将其写回文本文件。我想我完成了写作而不是阅读。我在这里尝试过阅读几个类似的问题,但似乎无法将其注入我的代码中。

阅读代码

public void read(List<AddressBook> addToList){
    BufferedReader br = null;
    try {
        String currentLine= "";
        br = new BufferedReader(new FileReader("bank_account.csv"));//file na gusto mo basahin
        while ((currentLine = br.readLine()) != null) {
            System.out.println(currentLine); // print per line

                for (AddressBook read : addToList) {
                    br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd());
                    addToList.add(read);
                }           }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)
            {
                br.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

}

这是我用写作

所做的
public void write(List<AddressBook> addToList) {
        try {
            File file = new File("bank_account.csv"); //file
            // if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }
            //FileWriter fw = new FileWriter(file.getAbsoluteFile());
            FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 
            BufferedWriter bw = new BufferedWriter(fw);
            for (AddressBook write : addToList) {
                bw.write(write.getName() + "," + write.getAddress() + "," + write.getTelNum() + "," + write.getEmailAdd());
                bw.newLine();
            }
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2 个答案:

答案 0 :(得分:0)

while ((currentLine = br.readLine()) != null) {
        System.out.println(currentLine); // print per line

            for (AddressBook read : addToList) {
                br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd());
                addToList.add(read);
             }
 }  

我打赌你需要做的事情如下:

  1. 阅读每一行
  2. 解析它(每行是一个CSV)
  3. 使用所有信息创建一个新的AddressBook对象
  4. 将其添加到集合
  5. 代码如下:

    while ((currentLine = br.readLine()) != null) {
            System.out.println(currentLine); // print per line
            String[] splitted = currentLine.split(",");
            AddressBook address = new AddressBook(splitted[0], splitted[1], splitted[2], splitted[3]);
    
            addToList.add(address);
    } 
    

    当然,您需要检查和验证一些事情,但这很有必要。

答案 1 :(得分:0)

也许你需要像这样的阅读方法。

    public void read() {
        List<AddressBook> addToList =new ArrayList<AddressBook>();
        BufferedReader br = null;
        try {
            String currentLine= "";
            br = new BufferedReader(new FileReader("bank_account.csv"));//file na gusto mo basahin
            while ((currentLine = br.readLine()) != null) {
                System.out.println(currentLine); // print per line

//                  for (AddressBook read : addToList) {
                        String[] split =currentLine.split(",");
                        AddressBook read = new AddressBook();
                        read.setName(split[0]);
                        read.setAddress(split[1]);
                        read.setTelNum(split[2]);
                        read.setEmailAdd(split[3]);
//                      br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd());
                        addToList.add(read);
//                  }           
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)
                {
                    br.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }