当前位置: 代码迷 >> J2SE >> $$$问个文件传输有关问题
  详细解决方案

$$$问个文件传输有关问题

热度:162   发布时间:2016-04-24 18:02:36.0
$$$问个文件传输问题
如何将本地图片文件,转成字节码流后
然后再 转成对象 用于 网络传输呢?


------解决方案--------------------
javax.imageio.*;
里面的方法也许有用:
BufferedImage bImage = new BufferedImage(image.getWidth(), image
.getHeight(), BufferedImage.TYPE_INT_ARGB);
 
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
ImageIO.write(bImage, format, out);
} catch (IOException e) {
e.printStackTrace();
}
byte [] b = out.toByteArray();
b传过去,再转成图像,用FileOutpurStream 就好啦
FileOutputStream fos = new FileOutputStream(file);
for (int i = 0; i < b.length; i++) {
fos.write(b[i]);
}
fos.flush();
------解决方案--------------------
为什么不用字节流直接传输?
如果把字节流转成对象,然后再网络传输,就是串行化操作了
这个对象应该实现串行化接口
关于串行化
------解决方案--------------------

看看
------解决方案--------------------
将文件转成字节流就可以传输了,不用转成对象再传输,这样会更麻烦。
使用文件IO操作,就可以将文件读取成字节流(字节数组)。
传输的话,要看楼主要用什么方式传了。
------解决方案--------------------
探讨

socket
啊 呵呵

还是回到我问题的 起点,能把 字节流转成 对象吗?

然和 传对象过去,在用 objectinputstream  writeobject 出来。。

------解决方案--------------------
小文件,直接读成字节数组,进行传输就行。
楼主说,你那里已经有线程的传输框架,不知道具体传输对象,使用的是什么类。
如果使用的是JDK中的ObjectOutputSteam的实现类对象的话,write方法就可以传输字节数组。
在Java当中,JDK所提供的文件类,没有实现Serializable接口,是不能够序列化的,
所以不能直接进行对象传输。但文件可以读取成字节数组,进行传输。
小文件,可以一次性读取到内存中,然后直接调用相关方法就可以传输。
大文件,要想办法实现文件的随机访问与传输。
如果楼主的框架不是使用的ObjectOutputStream进行传输,那就请楼主找找,有没有类似传输字节数组的方法。如果没有,楼主可以把字节数组封装的一个实现Serializable接口的类里面,这样,传输这个对象到服务端就可以了。
------解决方案--------------------
不知道lz是怎么像你说的传图像的
------解决方案--------------------
28楼的代码,其实还是可以优化一下的。比如,File对象,可以获得文件的大小(所占字节数)。
然后根据文件大小,创建一个byte[],然后直接把数据读到数组里就可以了,没必要创建那个out缓冲区。
------解决方案--------------------
帮顶
------解决方案--------------------
我是不是再揿一下别的门钉?”令狐申怯生生地说,目光从三个伙伴身上掠过。他还是称之为“门钉”,实际上,他已确凿无疑地弄明白了:这是放映全息电影的一个个按钮。
------解决方案--------------------
探讨
引用:
28楼的代码,其实还是可以优化一下的。比如,File对象,可以获得文件的大小(所占字节数)。
然后根据文件大小,创建一个byte[],然后直接把数据读到数组里就可以了,没必要创建那个out缓冲区。

BufferedOutputStream(fstream);
看错了,这个buffer不是速度 快么 一次性 写入。。。。呵呵

------解决方案--------------------
学习!
------解决方案--------------------
路过,我不太懂
------解决方案--------------------
友情帮顶
------解决方案--------------------
java socket可以完成
------解决方案--------------------
.
------解决方案--------------------
看来我理解错意思啦
------解决方案--------------------
很好,学习了,谢谢各位
------解决方案--------------------
很好,学习了,谢谢各位
------解决方案--------------------
  相关解决方案