有关对象流写入读取文件的一个细节

  在写日志系统的时候,出于导入数据库比较方便的考虑,所以就想把用户的操作都封装在一个对象里面,然后把整个对象写到文件里面去。需要导入数据库时,再从文件中读取出对象信息,把对象写入数据库。测试的时候,对象写入文件和从文件读取对象是放在了不同的项目里,也就是说我在一个项目里执行写入操作,在另外一个项目执行读取操作。读取的项目里面的对象类是从写入操作项目里复制粘贴的。然后问题就来了,写入文件正确执行,文件里已经存在了写入的信息,但是读取文件的时候抛了异常,是classnotfoundexception,开始我还以为是类不一致导致的,经过仔细的检查,发现两个类都是一模一样的。最后看到控制台输出的信息,发现提示是找不到我那个写入的项目的xx包下的对象类,但我读取的项目里并没有xx包,于是我试着在读取的项目下新建xx包,把对象类放在xx包下,运行后结果就可以了。

  结论:当用writeobject把对象写入文件的时候,应该会把对象类所在的package的信息也写入到文件中,所以当一个项目需要读取另外一个项目写入的对象文件的数据时,需要在本项目里新建和写入项目对应的xx包,并把对象类放在这个xx包下面,这样的说项目就可以正常读取,否则就会抛出classnotfoundexception。

时间: 2024-10-12 12:45:24

有关对象流写入读取文件的一个细节的相关文章

用流来读取文件(getline,istringstream)

ifstream infile("fileanme"); 原型:getline(istream &infile, string &line); 函数说明:读取文件中的一行,当用循环读取时,遇到空行不会终止循环的运行.可作为文件是否读到结尾的标志(while(getline(infile,line))) 其他功能:可读取固定的字符数,到某一个字符标识结束等. istringstream linestream(line); 该流可将getline得到的一行以空格隔离的字符串

字符串,字典,数组写入本地文件和从本地文件读取

参考:http://blog.csdn.net/hakusan/article/details/39429393?utm_source=tuicool&utm_medium=referral 一.字符串,字典,数组存储到本地文件 字符串,数组,字典存储到本地文件过程一样,只是要存储的数据类型不同而已,这里以字符串存储到本地文件为例,如下:    NSString *content = @"将字符串存储到本地文件";    (1)获取Documents文件夹路径 参数:(1)指定

Java学习总结(8)—内存流,打印流,对象流,RandomAccessFile,装饰者设计模式

一.内存流 内存流主要用来操作内存 BytearrayInputStream和ByteArrayOutputStream输入和输出可以把文件作为数据源,也可以把内存作为数据源 (1)ByteArrayInputStream主要完成将内容从内存读入到程序中,而ByteArrayOutputStream的主要功能是是将数据写入到内存中 (2)注意:因为这两个流没有使用系统资源,所以不用关闭,也不需要抛出异常 内存操作示意图 (1)从程序中读:程序<-ByteArrayInputStream<-内存

如何有效的使用C#读取文件

如何有效的使用C#读取文件  你平时是怎么读取文件的?使用流读取.是的没错,C#给我们提供了非常强大的类库(又一次吹捧了.NET一番),里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,那么你真的会用它读取文件中的数据了么?真的能读完全么? 通常我们读取一个文件使用如下的步骤: 1.声明并使用File的OpenRead实例化一个文件流对象,就像下面这样 FileStream fs = File.OpenRead(filename); 或者 FileStream fs =

HDFS读文件过程分析:读取文件的Block数据

转自http://shiyanjun.cn/archives/962.html 我们可以从java.io.InputStream类中看到,抽象出一个read方法,用来读取已经打开的InputStream实例中的字节,每次调用read方法,会读取一个字节数据,该方法抽象定义,如下所示:public abstract int read() throws IOException;Hadoop的DFSClient.DFSInputStream类实现了该抽象逻辑,如果我们清楚了如何从HDFS中读取一个文件

FileInputStream 读取文件数据的输入字节流

1 package com.inputstream; 2 3 /* 4 File类: 用于描述一个文件或者文件夹的. 5 6 通过File对象我们可以读取文件或者文件夹的属性数据,如果我们需要读取文件的内容数据,那么我们需要使用IO流技术. 7 8 IO流(Input Output) 9 10 IO流解决问题: 解决设备与设备之间的数据传输问题. 内存--->硬盘 硬盘--->内存 11 IO流技术: 12 IO流分类: 13 如果是按照数据的流向划分: 14 输入流 15 输出流 16 如果

Go_18: Golang 中三种读取文件发放性能对比

Golang 中读取文件大概有三种方法,分别为: 1. 通过原生态 io 包中的 read 方法进行读取 2. 通过 io/ioutil 包提供的 read 方法进行读取 3. 通过 bufio 包提供的 read 方法进行读取 下面通过代码来验证这三种方式的读取性能,并总结出我们平时应该使用的方案,以便我们可以写出最优代码: package main import ( "os" "io" "bufio" "io/ioutil"

使用SharedPreference和对象流存储对象

编写PreferencesUtils工具类可以简单对象(可以缓存对象中所有public的简单属性) 另外研究了Preference存储与直接采用对象文件缓存方式的区别 第一次写文件时 1.效率,直接缓存对象文件比Preference快 2.大小,直接缓存对象文件比Preference文件小 3.缓存目录不同,Preference缓存在shared_prefs下,对象文件则根据我们的设置可以选择目录 在设置中有两个操作 清除缓存:会将data/应用程序/caches目录下的文件删除 清除数据:会将

Golang 中三种读取文件发放性能对比

Golang 中读取文件大概有三种方法,分别为: 1. 通过原生态 io 包中的 read 方法进行读取 2. 通过 io/ioutil 包提供的 read 方法进行读取 3. 通过 bufio 包提供的 read 方法进行读取 下面通过代码来验证这三种方式的读取性能,并总结出我们平时应该使用的方案,以便我们可以写出最优代码: package main import ( "os" "io" "bufio" "io/ioutil"