将不同类型的变量保存到文件中
Posted
技术标签:
【中文标题】将不同类型的变量保存到文件中【英文标题】:Save diffrent kind of variables to a file 【发布时间】:2015-04-12 08:34:24 【问题描述】:我想。目前我正在使用DataOutputStream
这样做。首先我保存一个短裤数组,然后我保存另一个短裤数组,然后我想保存一个多头数组。问题是当我阅读文件时,我不知道我保存了多少短裤。我不知道第一个短数组有多大。
我可以通过指定一个让我知道短数组何时停止的值来解决这个问题。例如,我说值 -99999 告诉我数组何时结束。但是短数组在结束之前包含值 -99999 的可能性很小。
有没有办法创建标记?还是应该为每个数组创建不同的文件?
【问题讨论】:
好吧,如果您只需要分隔数字,我认为分隔符最好是字母。 @Alex 是的,这解决了我的问题,哈哈。谢谢,抱歉这个愚蠢的问题:),发表你的评论作为答案然后我可以关闭它,还是我应该删除这个问题? 为什么不将其保存为易于解析的标准格式(如 JSON 或 XML),而不是发明自己的格式? @JB Nizet,使用 xml 保存时间会更长,文件也会更大,对吧? @Alexanus 所以使用 JSON! 【参考方案1】:你应该先写数组长度,然后写数组,这样你就知道要读取多少项了。
【讨论】:
【参考方案2】:先读取数组的长度,再读取那么多元素
【讨论】:
【参考方案3】:你可以用这个
写作:
short[] shorts1 = ...; //an array
short[] shorts2 = ...; //another array
long[] longs = ...; //another array
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("the filename")))
out.writeObject(shorts1);
out.writeObject(shorts2);
out.writeObject(longs);
out.flush();
catch (IOException e)
e.printStackTrace();
此代码首先将两个单独的短数组写入一个文件,然后再写入一个长数组。
阅读:
short[] shorts1;
short[] shorts2;
long[] longs;
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("the filename")))
shorts1 = (short[])in.readObject();
shorts2 = (short[])in.readObject();
longs = (long[])in.readObject();
catch (IOException | ClassNotFoundException e)
e.printStackTrace();
此代码从写入它们的文件中读取两个单独的短数组和长数组。
【讨论】:
@jenzz 是的,使用 ObjectOutputStream.writeObject (someArray) 请解释为什么这解决了 OP 的问题,这与读取而不是写入对象有关。 我已经澄清了我的答案 呃,不,你没有。你只是给出了代码,而不是解释它是如何回答这个问题的。 @QPaysTaxes 两个短数组是分开的吧?以上是关于将不同类型的变量保存到文件中的主要内容,如果未能解决你的问题,请参考以下文章