读书人

java中将对象写下文件

发布时间: 2012-09-08 10:48:07 作者: rapoo

java中将对象写入文件
前两天无意中发现java中可以把对象写入文件(因为平时没太注意,所以没有发现,其实这也是team leader叫我们翻译C#代码的时候发现的)。正好今天晚上闲着无聊,就来看看这个是怎么回事了。

java的IO包当中提供了,向文件中写入文件和读取文件的方法。好吧,来看下具体怎么回事吧。我们先写一个像文件当中写单个对象的方法吧。

public void writeObject() {try {HashMap<String,String> map = new HashMap<String,String>();map.put("name", "foolfish");FileOutputStream outStream = new FileOutputStream("E:/1.txt");ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);objectOutputStream.writeObject(map);outStream.close();System.out.println("successful");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}




这里我们将一个map对象插入一个txt文件当中。java的IO包当中提供了Object的文件流。代码很简单,我们下面来看一看从该文件当中读取这个对象吧

public void readObject(){FileInputStream freader;try {freader = new FileInputStream("E:/1.txt");ObjectInputStream objectInputStream = new ObjectInputStream(freader);HashMap<String,String> map = new HashMap<String,String>(); map = (HashMap<String, String>) objectInputStream.readObject(); System.out.println("The name is " + map.get("name"));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}


代码也很简单,我们使用ObjectInputStream 的readobject的就可以读取文件中的对象,再按照封装对

象时候的类型进行强制转换一下。输出结果是aa foolfish。

上面提供的是对单个对象的存入和读取。对多个不同的对象该方法也适用。还是用代码来说明下吧。我们同时插入两个不同的对象,一个map,一个list。

public class ObjectToFile {public void writeObject() {try {HashMap<String,String> map = new HashMap<String,String>();map.put("name", "foolfish");List<String> list = new ArrayList<String>();list.add("hello");list.add("everyone");FileOutputStream outStream = new FileOutputStream("E:/1.txt");ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);objectOutputStream.writeObject(map);objectOutputStream.writeObject(list);outStream.close();System.out.println("successful");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public void readObject(){FileInputStream freader;try {freader = new FileInputStream("E:/1.txt");ObjectInputStream objectInputStream = new ObjectInputStream(freader);HashMap<String,String> map = new HashMap<String,String>(); map = (HashMap<String, String>) objectInputStream.readObject(); ArrayList<String> list = new ArrayList<String>(); list = (ArrayList<String>) objectInputStream.readObject(); System.out.println("The name is " + map.get("name")); System.out.println("aa " + list.get(1));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String args[]){ObjectToFile of = new ObjectToFile();of.writeObject();of.readObject();}}


怎么样,运行一下,可以实践该功能吧。不过这里还有个问题,对于多个相同类型对象的方法可以写入,但是读取的方法暂时还没有找到,不过既然能写进去,那么也应该可以读取出来。恩,是这样的,hoho。回去再看看文档。下班咯




读书人网 >移动开发

热点推荐