2015-04-24 62 views
5

在我的小银行应用程序中,用户必须输入一些值(名称,SSN,金额等),并将它们存储在arrayList中。 arrayList大小是动态的。是否推荐序列化和反序列化存储在arrayList中的对象?

但这个问题是我松了所有数据一旦我终止应用程序。这导致我考虑执行写入和读取文件(文件I/O)。

现在我也来认识一下什么叫做序列化和反序列化,虽然我不是在什么情况下要实现这一需求十分肯定。

我是否需要它在我的特定情况下,或者只是写入和从文件中读取就足够了?

什么序列化和反序列化与文件I/O有关?

[注:我会给如果需要更多资料]

回答

2

这是一个Database进入画面。首先,您可以使用MySQL DB - 这是一款针对中小型企业应用的出色免费数据库。后来,如果您打算将您的应用部署到生产环境 - 具有大量用户的高级功能,并且准备为此付出代价 - 您可以考虑其他数据库,如Oracle等。

将信息存储到文件(( De)序列化)不推荐用于任何实际应用。

+1

对于小的应用程序,例如HSQL,H2或Derby(JabaDB)嵌入式数据库也可以是一个不错的选择他们不需要设置专用的服务器应用程序。 –

1

如果要将自己的类的实例写入文件,则需要序列化。在你的情况下,你可以创建一个java类来保存所有关于customer的值,然后重写hashCode()和equals(),然后将你的对象写入文件。 http://www.tutorialspoint.com/java/java_serialization.htm

此外,如果你愿意,你可以存储个人领域的文件以及intString

虽然我会建议使用数据库来存储所有这些信息。但看起来你是一名学生,仍处于学习阶段。因此,直接与数据库进行交互可能不是一种好的方法。

2

序列化是其中对象可以表示为字节序列,包括该对象的数据的信息以及关于该对象的类型和类型存储在对象数据的机制。

的ArrayList已经实现了系列化,所以,在你的榜样,你可以写这样的事情:

ArrayList<String> al=new ArrayList<String>(); 
al.add("Jean"); 
al.add("Pierre"); 
al.add("John"); 

try{ 
    FileOutputStream fos= new FileOutputStream("myfile.txt"); 
    ObjectOutputStream oos= new ObjectOutputStream(fos); 
    oos.writeObject(al); 
    oos.close(); 
    fos.close(); 
}catch(IOException ioe){ 
    ioe.printStackTrace(); 
} 

在这里,我们将列表保存人在文件myfile.txt。

读取该文件,让你的ArrayList的时候,你会使用ObjectInputStream的:

FileInputStream fis = new FileInputStream("myfile.txt"); 
ObjectInputStream ois = new ObjectInputStream(fis); 

ArrayList<String> list = (ArrayList<String>) ois.readObject(); 

ois.close(); 
+0

库斯库尔曼,谢谢,这么好的答案!我相信它会帮助我一路走下去。我想知道的最后一件事是在我的程序中,ArrayList在我主要方法中的主类中。对于setObject和get对象,我创建了另一个类。还有我为创建文件I/O而创建的第三个类。假设这个类的名字是“ReaderWriter”。现在我有多冷,可以将arrayList的引用(在您的示例中称为“al”)引入到我的ReaderWrite类中? – Munira

+0

我不确定我是否理解你的问题,但我会尽力回答。你想要引用你的类中处理I/O的东西。你能把第二段代码放在我的答案中,在你班上的某个地方吗?然后,您将获得对保存在文件中的列表的引用。 – couscousman

1
Yes, you can use arraylist for serialization and deserialization. 
Whenever u want to write and read the object into file and from file 
respectively then u need to be object should be serialized and object 
write into the file in byte stream format.that means ur data will be secure in 
stream.you can used serialization interface:- 
To persist data for future use. 
To send data to a remote computer using such client/server Java technologies as RMI or socket programming. 
To "flatten" an object into array of bytes in memory. 
To exchange data between applets and servlets. 
To store user session in Web applications. 
To activate/passivate enterprise java beans. 
To send objects between the servers in a cluster. 
and more............ 
相关问题