java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们
答案:5 悬赏:10 手机版
解决时间 2021-03-24 11:37
- 提问者网友:自食苦果
- 2021-03-23 11:42
java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-03-23 13:12
buffer 只是一个缓冲字节数组
blobOutputStream.write(buffer,0,nread );
第三个长度是每次读出字节的长度,缓冲数组设置大点 2048即可
blobOutputStream.write(buffer,0,nread );
第三个长度是每次读出字节的长度,缓冲数组设置大点 2048即可
全部回答
- 1楼网友:深街酒徒
- 2021-03-23 14:38
你代码里面的nread这个变量记录了read()实际读取的数据量,所以blobOutputStream.write(buffer);
这一句是有问题的,不能直接write整个buffer,只能write nread这么多个字节
buffer的长度可以根据实际情况设置,就是看数据规模,一般设置成2的多少次方的大小
这一句是有问题的,不能直接write整个buffer,只能write nread这么多个字节
buffer的长度可以根据实际情况设置,就是看数据规模,一般设置成2的多少次方的大小
- 2楼网友:往事埋风中
- 2021-03-23 14:12
byte[] buffer = new byte[8];
int nread = 0;
while ((nread = byteIn.read(buffer)) != -1) {
blobOutputStream.write(buffer,0,nread);
}
nread不是记录了读到了多少字节吗?追问谢谢
int nread = 0;
while ((nread = byteIn.read(buffer)) != -1) {
blobOutputStream.write(buffer,0,nread);
}
nread不是记录了读到了多少字节吗?追问谢谢
- 3楼网友:洒脱疯子
- 2021-03-23 13:36
谁说是尽量填满???
b只是当个缓冲区用。这个read方法返回实际读取的长度。
如果每次都一样,那就根本不用返回了。每次都一样长,那还叫流
b只是当个缓冲区用。这个read方法返回实际读取的长度。
如果每次都一样,那就根本不用返回了。每次都一样长,那还叫流
- 4楼网友:往事埋风中
- 2021-03-23 13:24
那个长度应该只是缓冲区而已,应该不影响结果的。我做的时候一般都设置为1024,即1KB
这个是我部分的成功代码
inputStream = new BufferedInputStream(new FileInputStream(
downloadFile));
outputStream = new BufferedOutputStream(response
.getOutputStream());
byte[] buffer = new byte[1024];
int readIndex;
while (-1 != (readIndex = inputStream.read(buffer, 0,
buffer.length))) {
outputStream.write(buffer, 0, readIndex);
}
这个是我部分的成功代码
inputStream = new BufferedInputStream(new FileInputStream(
downloadFile));
outputStream = new BufferedOutputStream(response
.getOutputStream());
byte[] buffer = new byte[1024];
int readIndex;
while (-1 != (readIndex = inputStream.read(buffer, 0,
buffer.length))) {
outputStream.write(buffer, 0, readIndex);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯