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]); 展开
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]); 展开
1个回答
展开全部
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();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询