我有一个包含这样内容的文件:
accountNumber=1000,分支名称=‘11’,balance=420,customerNumber=1 accountNumber=1001,分支名称=‘11’,balance=323,customerNumber=2
我有一个读取内容并将其加载到ArrayList的方法,但是:
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)
发布于 2021-01-19 15:14:09
Java没有自动将这些行转换为Account对象的解决方案,您需要自己实现它。假设线条模式没有改变,下面是如何使其工作的一个示例:
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();
}https://stackoverflow.com/questions/65793053
复制相似问题