outputStream.write(bytes, off, len);
时间: 2024-02-29 09:57:20 浏览: 58
`outputStream.write(bytes, off, len)` 是 Java IO 中 `OutputStream` 类的一个方法,用于将 `bytes` 数组中从下标 `off` 开始、长度为 `len` 的字节写入输出流。具体来说,该方法会将 `bytes[off]` 到 `bytes[off + len - 1]` 这一段连续的字节写入输出流中。
需要注意的是,如果输出流的底层实现是基于网络或文件的,那么该方法可能会阻塞当前线程,直到所有的字节都成功写入为止。此外,如果 `bytes` 中的字节不足 `len` 个,那么只会写入 `bytes` 中的所有字节。
相关问题
public void send(String str) { if(str.isEmpty())return; try { byte[] bytes; if (!isHex16Enabled) { bytes = str.getBytes(); Log.d(TAG,"send(org)="+ str); } else { bytes = StringUtils.hexStringToByteArray(str); Log.d(TAG, "send(16hex)="+new String(bytes,"UTF-8")); } if (outputStream != null) { if(isPreSuffixEnabled)outputStream.write(PREFIX); outputStream.write(bytes);//写入数据 if(isPreSuffixEnabled)outputStream.write(SUFFIX); outputStream.flush(); } } catch (IOException e) { e.printStackTrace(); } }
这段代码定义了一个发送数据的方法send,用于向蓝牙设备发送数据。首先对发送的字符串进行判空操作,如果为空则直接返回。然后根据是否启用了16进制发送模式,将字符串转换成字节数组。如果使用了16进制发送模式,则将字节数组转换成字符串进行日志输出。接着判断输出流不为空,如果不为空,则将数据写入输出流中,并在数据前后添加前缀和后缀(如果启用了前后缀模式)。最后刷新输出流。如果在写入数据时出现IO异常,则打印异常栈信息。这个方法可以在Android中用于向蓝牙设备发送数据。
OutputStream outputStream = new FileOutputStream(savePath); outputStream.write(pdfBytes); 如何查看写入了多少字节
在使用OutputStream将数据写入文件时,您可以调用write方法来将字节写入流中。每次调用write方法时,它将写入一个字节数组,返回值是void类型,表示写入操作是否成功。如果您想知道已经写入了多少字节,可以使用字节数组的length属性来获得写入的字节数。
另外,您可以使用Java IO库中的BufferedOutputStream类来缓存输出。BufferedOutputStream类具有一个内部缓冲区,可以减少实际写入文件的次数,提高性能。当缓冲区已满或调用flush()方法时,BufferedOutputStream将写入缓冲区中的所有数据到底层输出流中。
示例代码:
```
OutputStream outputStream = new FileOutputStream(savePath);
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
bos.write(pdfBytes);
bos.flush();
System.out.println("已写入 " + pdfBytes.length + " 字节");
```
在这个示例中,我们使用了BufferedOutputStream来缓存输出,并在写入完成后调用了flush()方法,以确保所有数据都被写入文件。然后,我们使用pdfBytes数组的length属性来打印写入的字节数。
阅读全文