如果通过流把文件和信息压缩成字节流并发送?

走走停停0230 2013-07-31 11:43:25
我想做一个服务端和客户端通信的功能。
客户端可以发送各种文件以及文字信息,由服务端接收并且解析出来。
我觉得过程应该是这边打包成字节流的形式,然后发送,然后接收的吧?
那文件和信息怎么打包成字节流形式呢?
求教。
...全文
198 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kittaaron 2013-07-31
  • 打赏
  • 举报
回复
不知道楼主强调的是‘打包’还是‘要用字节传送’。 似乎所有最基本的IO操作实现的 读 或 写 默认就是操作字节的!如果你只是强调发送字节,就用Inputstream的read,write就行了。 如果是强调要‘打包’再发送,就先打包再发送喽。打包的工具JAVA中有现成的!收到之后要解包(一般就是压缩和解压缩了)。 一楼给的代码是序列化的读写操作,不知道是不是楼主想要的。
失落夏天 2013-07-31
  • 打赏
  • 举报
回复
借用人家的一个例子吧:

 public static void main(String args[]) throws Exception
    {
        Map map = new HashMap();
        map.put("a", "a");
        map.put("b", "b");
        map.put("c", "c");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream out = new ObjectOutputStream(baos);
        out.writeObject(map);
        out.close();
        System.out.println(baos.toByteArray());
        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
        Map map2 = (Map)in.readObject();
        System.out.println(map2);
    }
以及转化list对象:

public byte[] getByte(List<Object> list) {
		byte[] buf = null;
		ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 构造一个字节输出流
		ObjectOutputStream oos;
		try {
			oos = new ObjectOutputStream(baos);

			// 构造一个类输出流
			oos.writeObject(list); // 写这个对象
			buf = baos.toByteArray(); // 从这个地层字节流中把传输的数组给一个新的数组
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return buf;
	}

	public List<Object> getObject(byte[] b) {
		List<Object> list=null;
		// 构建一个类输入流,地层用字节输入流实现
		try {
			ByteArrayInputStream bais = new ByteArrayInputStream(b);
			ObjectInputStream ois;
			ois = new ObjectInputStream(bais);
			list =(List<Object>) ois.readObject();
			// ArrayList str = (ArrayList) ois.readObject(); //读取类
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧