2

我正在开发 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);

在这我发现当读取的长度太大时它没有完全读取数据

有人请帮我吗?

4

3 回答 3

4

仅使用标准 API,DataInputStream该类有一个调用方法,该方法readFully从流中填充字节数组:

byte[] data = new byte[lengthtoread];
DataInputStream in = new DataInputStream(mmInStream);
in.readFully(data);

完成后不要忘记关闭流!

于 2013-07-15T20:47:54.297 回答
1

你到底想做什么?

如果要从文件中读取所有字节,请执行以下操作:

Files.readAllBytes(Paths.get("filename.txt"));

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#readAllBytes%28java.nio.file.Path%29

于 2013-07-15T20:43:42.163 回答
0

是的:使用 Jakarta Commons IOUtils。此类包含用于读取和写入流的完全调试的实用程序方法。

如果要读取整个流,请使用IOUtils.toByteArray(). 但是,请注意,执行此操作时可能会耗尽内存。通常最好一次处理一段流。

于 2013-07-15T20:43:30.523 回答