Java分块传输的思路
假设块大小为BLOCK_SIZE。
1.读取大小为BLOCK_SIZE的源文件
2.将数据传输过去
3.再读大小为BLOCK_SIZE的源文件
int MAX_USBFS_BUFFER_SIZE = 2;
byte[] bytes = new byte[MAX_USBFS_BUFFER_SIZE];
BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream("/sdcard/HelloWorld"));
int bytesRead = 0;
//从文件中按字节读取内容,到文件尾部时read方法将返回-1
while ((bytesRead = bufferInputStream.read(bytes)) != -1) {
//将读取的字节转为字符串对象
String chunk = new String(bytes, 0, bytesRead);
Log.i("LOG_TAG", chunk);
}
比较好的一个:
int MAX_USBFS_BUFFER_SIZE = 4096;
byte[] bytes = new byte[MAX_USBFS_BUFFER_SIZE];
BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream(rasterPath));
int i = 0;
while (bufferInputStream.available() > 0) {
Log.i(LOG_TAG, "bufferInputStream.available():" + bufferInputStream.available());
// memset, there will be some ASCII at the end of byte[]
// printer will print it out so need memset
Arrays.fill( bytes, (byte) 0 );
bufferInputStream.read(bytes, i*MAX_USBFS_BUFFER_SIZE, MAX_USBFS_BUFFER_SIZE);
mIPrintService.write(bytes, 0);
}