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

这是代码部分:Stringcontent=FileUtil.readFile(data);//读取文本文件内容//将读取出的文件内容,分成多个部分,每个部分都是40字节发... 这是代码部分:
String content = FileUtil.readFile(data);// 读取文本文件内容
// 将读取出的文件内容,分成多个部分,每个部分都是40字节发送
int number=40;
byte[] buffer = new byte[number];
int len = content.length();
int count = len / number;
// 够40的一组处理
for (int j = 0; j < count; j++) {

for (int m = 0; m < number; m++){
buffer[m] = content.getBytes()[m + j * number];
}
// 进行分组发送处理
System.out.println(buffer);
util.writePort(buffer);
Thread.sleep(2000);// 线程暂停2秒,单位毫秒,直到数据传输完毕,关闭线程
}

// 剩下的不够40的处理
for (int m = 0; m < len % number; m++)
System.out.println(content.getBytes()[m + count
* 40]);
展开
 我来答
llei32wang
2015-08-02 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1409万
展开全部

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

对于非单字节编码而言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<len;i++){
for(int j=0;j<length;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<len1;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();
}
追问

谢谢你的回答,但是数据还是存在问题。

请再帮忙看看是什么问题。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式