java 分批读取文件_java读取文件内容,分多个部分,每部分40字节,现每次只发送了前40个字节的内容,请帮忙看看哪里的问题,谢谢....

展开全部

int len = content.length(); 这句不对的。content.length()返回的字符长度62616964757a686964616fe58685e5aeb931333337613132而不是字节长度。

对于非单字节编码而言content.length()长度永远小于content.getBytes().length,只有对单字节字符而言这两个长度才相等。

另外分数组处理实在不是好办法,即需要书写更长的代码,运行效率也低于用流方式处理的。

一下是我写的两种方式的处理代码 你能明显的比较出来。流只用一个循环,而字节数组至少要一个双循环。String s="实现dhl反对思考浪费你的身份了你看打发士大夫士大夫似的";

//数组方式

byte[] bs=s.getBytes();

int length=5,len=bs.length/length,len1;

byte[] tmp=new byte[length];

for(int i=0;i

for(int j=0;j

tmp[j]=bs[i*length+j];

System.out.println(Arrays.toString(tmp));

}

tmp=new byte[length];

if((len1=bs.length%length)>0){

for(int i=0;i

tmp[i]=bs[len*length+i];

System.out.println(Arrays.toString(tmp));

}

//流方式

InputStream is=new ByteArrayInputStream(s.getBytes());

int length2=5,len2;

byte[] bs2=new byte[length2];

try {

while((len2=is.read(bs2))>0){

if(len2!=length2)

Arrays.fill(bs2, len2, 5, (byte)0);

System.out.println(Arrays.toString(bs2));

}

} catch (IOException e) {

e.printStackTrace();

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值