java 流 改变编码_java io过程中改变当前字符输入流的编码

使用jdk1.6中提供的类和方法,设计一个类或方法,从一个字节输入流中正确的读取输入流的内容。1、软件的IO逻辑是根据读取到的“字符”改变的,不是“字节”!2、给定的字节流编码是变...

使用jdk1.6中提供的类和方法,设计一个类或方法,从一个字节输入流中正确的读取输入流的内容。

1、软件的IO逻辑是根据读取到的“字符”改变的,不是“字节”!

2、给定的字节流编码是变动的,但在变动前会用采用了前一编码格式的内容提示接下来的内容的编码格式。如:每当读到“下一编码:xxx”那么,在“xxx”之后的字节都将采用“xxx”格式的进行编码。

3、起始的输入流为UTF-8编码,内容长度不确定。

4、所提供的字节流本身不具备mark和reset等功能,需自己缓存数据。

字节流的源:

String[] charset = {"utf-8","gbk","gb2312","unicode"};

String rdStr = "这是随机的文字序列123,包含重要信息的字符串结构,有字符判断处理,这是随机的文字序列¥……";

OutputStream out = getOutputStream();

String next = "下一编码:";

Random rand = new Random(System.currentTimeMillis());

int ni = Random.nextInt() % 4,last;

out.write((next+charset[ni]).getBytes(charset[ni]));

out.flush();

int i = 10;

String str = null;

while(i-->0){

str = rdStr.substring(ni, rdStr.length() - ni);

out.write(str.getBytes(charset[ni]));

out.write(str.getBytes(charset[ni]));

last = ni;

ni = rand.nextInt() % 4;

out.write((next+charset[ni]).getBytes(charset[last]));

}

out.flush();

要解析上面这样的流应该如何设计?

ps:越简单越好,不求高效,只希望有一个返回char类型的同步的read()方法以及可以随时改变read()编码的方法,因为高层逻辑要即使的做字符处理并反馈。如果有更好的解决方案,愿洗耳恭听。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值