File file = new File("F:/test/file.dat");
InputStream is = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(is);
File f = (File)ois.readObject();
System.out.println(f.getName());
总是会在第4行出错
在网上查了很多,这里应该不存在重复新建对象输出流的问题吧
26 个解决方案
#1
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
你这个文件的内容是不是ObjectOutputStream创建的呢:
#2
你把这2句File file = new File("F:/test/file.dat");
InputStream is = new FileInputStream(file);
改为一句试一试:
InputStream is=new FileInputStream(("F:/test/file.dat");
InputStream is = new FileInputStream(file);
改为一句试一试:
InputStream is=new FileInputStream(("F:/test/file.dat");
#3
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
#4
你这个F:/test/file.dat文件存的是什么东西啊。。你随便指定一个文件读当然会出错
你把写入这个文件的代码贴过来看看
你把写入这个文件的代码贴过来看看
#5
是这样的,我想把一个文件通过BASE64Encoder方法转化成为一个字符串传给服务器,然后再后台进行解码之后通过得到字节数组之后再转化成为一个文件对象
#6
效果是一样的
#7
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
#8
那你应该把文件的内容全部读出来啊。
或者,你服务是不是http的啊?直接用http client把内容直接传上去不就结了。
#9
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
#10
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
是这样的,我想把一个文件通过BASE64Encoder方法转化成为一个字符串传给服务器,然后再后台进行解码之后通过得到字节数组之后再转化成为一个文件对象
那你应该把文件的内容全部读出来啊。
或者,你服务是不是http的啊?直接用http client把内容直接传上去不就结了。
我想应该是你说的问题,不能够单一的使用对象流,应该是成对出现的吧(也就是ObjectOutputStream和ObjectInputStream应该同时使用,这样才能保证操作的文件已经序列化了)
然后我现在使用的是HttpClient发送Http请求
请问一下,你知道怎么把一个文件对象直接用Http方式传上去么?
现在我是直接用FileEntity fileEntity = new FileEntity(new File("F:/test/test.dat"), ContentType.MULTIPART_FORM_DATA);
postMethod.setEntity(fileEntity);
Httpclient.execute(postMethod);执行
我现在不知道在springmvc那边怎么接收到传递过来的文件
需要怎么写啊
@RequestMapping(value="upload", method = RequestMethod.POST)
public @RequestBody boolean uploadFile(@RequestBody ...问下这里应该怎么写啊) {
System.out.println(...);
return true;
}
#11
你这个F:/test/file.dat文件存的是什么东西啊。。你随便指定一个文件读当然会出错
你把写入这个文件的代码贴过来看看
嗯,应该是你说的问题,不能够单一的使用对象流,应该是成对出现的吧(也就是ObjectOutputStream和ObjectInputStream应该同时使用,这样才能保证操作的文件已经序列化了)
#12
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
#13
楼主可以忘记springMvc...
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
#14
用Base64传小文件是可以的,大文件也只是效率不高,不可能出错的,你肯定是转换或者读写的时候没弄好,导致文件被破坏。
#15
ObjectInputStream 是用来写对象的流吧(它操作的类必须实现serializable接口,可以用transient关键字来无视写的对象什么),你用来操作文件不好吧?
#16
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
#17
用Base64传小文件是可以的,大文件也只是效率不高,不可能出错的,你肯定是转换或者读写的时候没弄好,导致文件被破坏。
我用BASE64Encoder来编码从文件中读取出来的直接数组,然后再用BASE64Decoder解码由数组得到的字符串,然后再用输出流是可以将文件还原的,所以应该不存在文件破坏吧
InputStream is = new FileInputStream("F:/test/GPSfile1.dat");
byte[] b = new byte[1024];
int len = 0;
String base = "";
while((len = is.read(b)) > 0) {
BASE64Encoder encode = new BASE64Encoder();
base += encode.encode(b);
}
BASE64Decoder decode = new BASE64Decoder();
byte[] bt = decode.decodeBuffer(base);
OutputStream os = new FileOutputStream(new File("D:/text.txt"));
os.write(bt);
os.flush();
is.close();
os.close();
#18
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
#19
ObjectInputStream 是用来写对象的流吧(它操作的类必须实现serializable接口,可以用transient关键字来无视写的对象什么),你用来操作文件不好吧?
嗯,应该是你说的这样,要么就是操作的文件已经经过了序列化的才好
#20
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
哦,那你百度一下吧,这个我还真不太清楚
#21
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\zy\\Desktop\\tt.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(file);
byte[] bs = baos.toByteArray();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bs));
File f = (File)ois.readObject();
System.out.println(f.getName());
}
#22
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\zy\\Desktop\\tt.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(file);
byte[] bs = baos.toByteArray();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bs));
File f = (File)ois.readObject();
System.out.println(f.getName());
}
嗯,是要先用ObjectOutputStream序列化,然后再使用ObjectInputStream重新获取对象
#23
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
哦,那你百度一下吧,这个我还真不太清楚
呵呵,谢谢你哦
#24
楼主可以忘记springMvc...
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
谢谢你
#25
请问楼主是如何解决的呢? 我也遇到一样的问题了,不过我不是传文件,我是从数据库取数据装进List 然后用对象流传, 第一次传没问题,第二次传就会报这样的异常
#26
我第一次用就报错,在网上找了好久也没找到具体原因。
#1
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
你这个文件的内容是不是ObjectOutputStream创建的呢:
#2
你把这2句File file = new File("F:/test/file.dat");
InputStream is = new FileInputStream(file);
改为一句试一试:
InputStream is=new FileInputStream(("F:/test/file.dat");
InputStream is = new FileInputStream(file);
改为一句试一试:
InputStream is=new FileInputStream(("F:/test/file.dat");
#3
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
#4
你这个F:/test/file.dat文件存的是什么东西啊。。你随便指定一个文件读当然会出错
你把写入这个文件的代码贴过来看看
你把写入这个文件的代码贴过来看看
#5
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
是这样的,我想把一个文件通过BASE64Encoder方法转化成为一个字符串传给服务器,然后再后台进行解码之后通过得到字节数组之后再转化成为一个文件对象
#6
你把这2句File file = new File("F:/test/file.dat");
InputStream is = new FileInputStream(file);
改为一句试一试:
InputStream is=new FileInputStream(("F:/test/file.dat");
效果是一样的
#7
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
#8
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
是这样的,我想把一个文件通过BASE64Encoder方法转化成为一个字符串传给服务器,然后再后台进行解码之后通过得到字节数组之后再转化成为一个文件对象
那你应该把文件的内容全部读出来啊。
或者,你服务是不是http的啊?直接用http client把内容直接传上去不就结了。
#9
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
#10
楼主,你这几行代码的目的是什么啊?
你这个文件的内容是不是ObjectOutputStream创建的呢:
是这样的,我想把一个文件通过BASE64Encoder方法转化成为一个字符串传给服务器,然后再后台进行解码之后通过得到字节数组之后再转化成为一个文件对象
那你应该把文件的内容全部读出来啊。
或者,你服务是不是http的啊?直接用http client把内容直接传上去不就结了。
我想应该是你说的问题,不能够单一的使用对象流,应该是成对出现的吧(也就是ObjectOutputStream和ObjectInputStream应该同时使用,这样才能保证操作的文件已经序列化了)
然后我现在使用的是HttpClient发送Http请求
请问一下,你知道怎么把一个文件对象直接用Http方式传上去么?
现在我是直接用FileEntity fileEntity = new FileEntity(new File("F:/test/test.dat"), ContentType.MULTIPART_FORM_DATA);
postMethod.setEntity(fileEntity);
Httpclient.execute(postMethod);执行
我现在不知道在springmvc那边怎么接收到传递过来的文件
需要怎么写啊
@RequestMapping(value="upload", method = RequestMethod.POST)
public @RequestBody boolean uploadFile(@RequestBody ...问下这里应该怎么写啊) {
System.out.println(...);
return true;
}
#11
你这个F:/test/file.dat文件存的是什么东西啊。。你随便指定一个文件读当然会出错
你把写入这个文件的代码贴过来看看
嗯,应该是你说的问题,不能够单一的使用对象流,应该是成对出现的吧(也就是ObjectOutputStream和ObjectInputStream应该同时使用,这样才能保证操作的文件已经序列化了)
#12
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
#13
楼主可以忘记springMvc...
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
#14
用Base64传小文件是可以的,大文件也只是效率不高,不可能出错的,你肯定是转换或者读写的时候没弄好,导致文件被破坏。
#15
ObjectInputStream 是用来写对象的流吧(它操作的类必须实现serializable接口,可以用transient关键字来无视写的对象什么),你用来操作文件不好吧?
#16
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
#17
用Base64传小文件是可以的,大文件也只是效率不高,不可能出错的,你肯定是转换或者读写的时候没弄好,导致文件被破坏。
我用BASE64Encoder来编码从文件中读取出来的直接数组,然后再用BASE64Decoder解码由数组得到的字符串,然后再用输出流是可以将文件还原的,所以应该不存在文件破坏吧
InputStream is = new FileInputStream("F:/test/GPSfile1.dat");
byte[] b = new byte[1024];
int len = 0;
String base = "";
while((len = is.read(b)) > 0) {
BASE64Encoder encode = new BASE64Encoder();
base += encode.encode(b);
}
BASE64Decoder decode = new BASE64Decoder();
byte[] bt = decode.decodeBuffer(base);
OutputStream os = new FileOutputStream(new File("D:/text.txt"));
os.write(bt);
os.flush();
is.close();
os.close();
#18
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
#19
ObjectInputStream 是用来写对象的流吧(它操作的类必须实现serializable接口,可以用transient关键字来无视写的对象什么),你用来操作文件不好吧?
嗯,应该是你说的这样,要么就是操作的文件已经经过了序列化的才好
#20
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
哦,那你百度一下吧,这个我还真不太清楚
#21
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\zy\\Desktop\\tt.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(file);
byte[] bs = baos.toByteArray();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bs));
File f = (File)ois.readObject();
System.out.println(f.getName());
}
#22
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\zy\\Desktop\\tt.txt");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(file);
byte[] bs = baos.toByteArray();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bs));
File f = (File)ois.readObject();
System.out.println(f.getName());
}
嗯,是要先用ObjectOutputStream序列化,然后再使用ObjectInputStream重新获取对象
#23
你使用对象流读取数据是不是有点大材小用了,这个方法通常用于对象序列化读取对象时使用,如果你想单纯的读取里面的内容用FileInputStream就行、
我是想着本来是一个文件对象,测试转化流之后能不能再转化成为一个文件对象
按道理应该能,既然是文件对象,那为何多此一举呢,直接用IO即可。
那你知道怎么用HttpClient结合springmvc把文件传上去么?
不知道,我也在学spring mvc,但是我用的是另外一种方法,spring mvc自带的文件上传类。而且速度挺快的,至于你说的HttpClient我不太清楚,没有接触过,不过我有spring mvc的视频。正在看。
哦,我也想用springmvc自带的上传文件呢,但是项目中是要用HttpClient
哦,那你百度一下吧,这个我还真不太清楚
呵呵,谢谢你哦
#24
楼主可以忘记springMvc...
参考一下下面这个
http://www.cnblogs.com/blogsme/archive/2013/04/12/3016696.html
谢谢你
#25
请问楼主是如何解决的呢? 我也遇到一样的问题了,不过我不是传文件,我是从数据库取数据装进List 然后用对象流传, 第一次传没问题,第二次传就会报这样的异常
#26
我第一次用就报错,在网上找了好久也没找到具体原因。