首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JAVA将多值文件加载到ArrayList中

用JAVA将多值文件加载到ArrayList中
EN

Stack Overflow用户
提问于 2021-01-19 14:02:16
回答 1查看 74关注 0票数 0

我有一个包含这样内容的文件:

accountNumber=1000,分支名称=‘11’,balance=420,customerNumber=1 accountNumber=1001,分支名称=‘11’,balance=323,customerNumber=2

我有一个读取内容并将其加载到ArrayList的方法,但是:

代码语言:javascript
复制
private static void loadAccounts() throws IOException, ClassNotFoundException {
static ArrayList<Account> accounts = new ArrayList<Account>();
    FileInputStream fileInputStream = new FileInputStream("AccountFile");
    ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
    accounts = (ArrayList<Account>) objectInputStream.readObject();
    objectInputStream.close();
}

但是,在我调用loadAccount()之后,我得到了以下错误:

线程"main“中的java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:938)异常:无效的流头: 6163636F在java.io.ObjectInputStream.(ObjectInputStream.java:396) at Main.loadAccounts at Main.loadAccounts(Main.java:151) at Main.main(Main.java:18)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 15:14:09

Java没有自动将这些行转换为Account对象的解决方案,您需要自己实现它。假设线条模式没有改变,下面是如何使其工作的一个示例:

代码语言:javascript
复制
    private static void loadAccounts() throws IOException, ClassNotFoundException {
        List<Account> accounts = new ArrayList<Account>();
        final FileReader fileReader = new FileReader("AccountFile");
        final BufferedReader bufferedReader = new BufferedReader(fileReader);
        String line = bufferedReader.readLine();

        while ( line != null) {
            final String[] split = line.split(",");
            final Map<String, String> map = new HashMap<>();
            for (String entry : split) {
                final String[] keyAndValue = entry.split("=");
                map.put(keyAndValue[0], keyAndValue[1]);
            }
            Account account = new Account();
            account.setAccountNumber(map.get("accountNumber"));
            account.setBranchName(map.get("branchName"));
            account.setBalance(map.get("balance"));
            account.setBranchName(map.get("customerNumber"));
            
            accounts.add(account);
            line = bufferedReader.readLine();
        }

        fileReader.close();
        bufferedReader.close();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65793053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档