读取java

时间:2016-06-03 11:09:07

标签: java file byte

我正在使用arduino从一个SD读取字节到java应用程序。这是我的方法:

 if(temp.contains("_i_;")){
                imgByte = new ArrayList<>();
                imgByte.clear();

             for(int i=0; i< min(imgSize , 64) ;i++){
                                    imgByte.add((byte)rx.getInputStream().read());

                                             imgSize--;
             }  
             Files.write(imgFile, toByteArray(imgByte),StandardOpenOption.APPEND );
             System.out.println("Left: "+imgSize);
                   return true; 
             }

I 的;只是表示64个数据包即将到来。

但是太慢了我无法按时收到照片。是否有另一种方法,所以我只能读取一行中的所有64个字节?而不是迭代for循环? P.S:toByteArray将字节ArrayList转换为byte [],因此我可以将其写入文件。 我正在使用串行通信的jSerialComm库

2 个答案:

答案 0 :(得分:0)

你试过吗

Files.copy(rx.getInputStream(), imgFile);

答案 1 :(得分:0)

我通过以下方式解决了问题:

if(temp.contains("_i_;")){
                imgByte = new ArrayList<>();
                imgByte.clear();
                byte[] data = new byte[64];
            // for(int i=0; i< min(imgSize , 64) ;i++){
                                   // imgByte.add((byte)rx.getInputStream().read());
                                   rx.getInputStream().read(data, 0, min(imgSize , 64));
                                             imgSize-=min(imgSize , 64);
           //  }  
             //Files.write(imgFile, toByteArray(imgByte),StandardOpenOption.APPEND );
             Files.write(imgFile, data,StandardOpenOption.APPEND );
             System.out.println("Left: "+imgSize);
                   return true; 
             }