java读取文件时,InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们
现在是将文件保存到数据库中,数据库用的是oracle10g版本10.2,其中InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾...
现在是将文件保存到数据库中,数据库用的是oracle10g 版本10.2,其中InputStream的read(byte[])方法的byte[]的长度不知如何设置,请教大虾们
部门程序如下:
byte[] buffer = new byte[8];
int nread = 0;
while ((nread = byteIn.read(buffer)) != -1) {
blobOutputStream.write(buffer);
}
在这里,为了方便表示,我把数组的长度定义为8
如果读取的文件内容为"12345678",那么通过上面的程序保存到数据库中是正常的"12345678";
如果读取的文件内容为"1234567890",那么通过上面的程序保存到数据库中是"1234567890345678",是错误的,比正常的多了6位"345678";
请教:如何设置这个数组的长度,才能得到正确的结果? 展开
部门程序如下:
byte[] buffer = new byte[8];
int nread = 0;
while ((nread = byteIn.read(buffer)) != -1) {
blobOutputStream.write(buffer);
}
在这里,为了方便表示,我把数组的长度定义为8
如果读取的文件内容为"12345678",那么通过上面的程序保存到数据库中是正常的"12345678";
如果读取的文件内容为"1234567890",那么通过上面的程序保存到数据库中是"1234567890345678",是错误的,比正常的多了6位"345678";
请教:如何设置这个数组的长度,才能得到正确的结果? 展开
5个回答
展开全部
那个长度应该只是缓冲区而已,应该不影响结果的。我做的时候一般都设置为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);
}
展开全部
buffer 只是一个缓冲字节数组
blobOutputStream.write(buffer,0,nread );
第三个长度是每次读出字节的长度,缓冲数组设置大点 2048即可
blobOutputStream.write(buffer,0,nread );
第三个长度是每次读出字节的长度,缓冲数组设置大点 2048即可
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你代码里面的nread这个变量记录了read()实际读取的数据量,所以blobOutputStream.write(buffer);
这一句是有问题的,不能直接write整个buffer,只能write nread这么多个字节
buffer的长度可以根据实际情况设置,就是看数据规模,一般设置成2的多少次方的大小
这一句是有问题的,不能直接write整个buffer,只能write nread这么多个字节
buffer的长度可以根据实际情况设置,就是看数据规模,一般设置成2的多少次方的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
谁说是尽量填满???
b只是当个缓冲区用。这个read方法返回实际读取的长度。
如果每次都一样,那就根本不用返回了。每次都一样长,那还叫流
b只是当个缓冲区用。这个read方法返回实际读取的长度。
如果每次都一样,那就根本不用返回了。每次都一样长,那还叫流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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不是记录了读到了多少字节吗?
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |