我正在开发Android上的蓝牙应用程序。此inputStream来自连接套接字。我想读取一定长度的字节。
我尝试的第一种方式:
byte[] data = new byte[lengthtoread];
for (int i = 0; i < data.length; i++)
data[i] =(byte) mmInStream.read() ;
我发现它太慢了。
第二种方式:
byte[] data = new byte[lengthtoread];
mmInStream.read(data, 0, lengthtoread);
在此我发现当读取的长度太大时,它不能完全读取数据
有人请帮帮我吗?
答案 0 :(得分:4)
仅使用标准API,DataInputStream
类有一个名为readFully
的方法,它从流中填充一个字节数组:
byte[] data = new byte[lengthtoread];
DataInputStream in = new DataInputStream(mmInStream);
in.readFully(data);
完成后不要忘记关闭溪流!
答案 1 :(得分:1)
你究竟想做什么?
如果要读取文件中的所有字节,请执行以下操作:
Files.readAllBytes(Paths.get( “FILENAME.TXT”));
答案 2 :(得分:0)
是:使用Jakarta Commons IOUtils。该类包含用于读取和写入流的完全调试的实用程序方法。
如果要阅读整个流,请使用IOUtils.toByteArray()
。但是,请注意,执行此操作时可能会耗尽内存。通常,最好一次处理一段流。