二进制文件处理的问题

问题描述

循环读取文件,写文件部分到底有什么问题inputstream的read返回的是读取到长度大文件的读写到底怎么样才正确InputStreamdataStream=newByteArrayInputStream(imgOutputStream.toByteArray());outputStream=newFileOutputStream(newFile("c:\test.jpg"));byte[]buffer=newbyte[1024];intbytesRead=0;while((bytesRead=dataStream.read(buffer,0,buffer.length))!=-1){outputStream.write(buffer,0,bytesRead);}

解决方案

解决方案二:
顶上去
解决方案三:
报什么错误了?代码也没有贴全,你读取的数据源是什么?一个文件?还是一个字节数组?
解决方案四:
我只是想问while((bytesRead=dataStream.read(buffer,0,buffer.length))!=-1){outputStream.write(buffer,0,bytesRead);}这段代码片段有什么问题
解决方案五:
引用3楼cii_yinbin的回复:

我只是想问while((bytesRead=dataStream.read(buffer,0,buffer.length))!=-1){outputStream.write(buffer,0,bytesRead);}这段代码片段有什么问题

没什么问题啊。bytesRead是实际读取到字节数。一般写 >0就可以了。大文件,要适当的做outputStream.flush()动作。否则内存会吃得很厉害,甚至溢出。

时间: 2024-11-03 04:14:56

二进制文件处理的问题的相关文章

VS2013下动态数组二维数组读二进制文件的问题

问题描述 VS2013下动态数组二维数组读二进制文件的问题 int samples_to_read = 7200; uint8_t **caculate_a; int count2,count3; caculate_a = (uint8_t **)malloc(sizeof(uint8_t *)* 3); for (count1 = 0; count1<3; count1++){ //动态数组分配空间 caculate_a[count1] = (uint8_t *)malloc(sizeof(u

fread-从二进制文件读取为什么总是不对。。。

问题描述 从二进制文件读取为什么总是不对... #include void main() { int a[2][2]={2,2,2,2}; int b[2][2]; FILE *file; FILE *infile; file=fopen("ok.txt","wb"); fwrite(a,sizeof(a),1,file); infile=fopen("ok.txt","rb"); fread(b,sizeof(b),1,in

在Oracle 8i的SQL*Plus中如何利用LOB字段存取操作系统二进制文件

oracle|二进制    在Oracle 8i的SQL*Plus中如何利用LOB字段存取操作系统二进制文件                                                        广东省岭澳核电有限公司工程控制处管理信息科(518124)  黄福同           Oracle 8i数据库系统功能比前面版本更加完善,尤其是出现了BLOB,CLOB,NCLOB,BFILE这些LOB(大型对象)类型来取代功能有限的LONG.LONGRAW类型.BLOB字段

MYSQL中如何存取二进制文件

mysql|二进制 如何存取二进制文件,用以下代码说明 首先创建测试表testtable CREATE TABLE testtable ( id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,filename CHAR(255),data LONGBLOB ); 将文件存入表中 <?php mysql_connect( "localhost", "root", "password"); //连接数据库

纯asp分离FORM数据中的二进制文件和文本数据

二进制|数据 以下源代码为一个文件 <%''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''作者:playxp,Email:playxp@sohu.com有问题请与我联系'功能:纯asp分离FORM数据中的二进制文件和文本数据(支持中文).'使用方法:将此文件包含在处理form的asp文件中,使用GetValue(name)来读取表单中各个元素的值.'注意:一定不要

利用DataSet存取SQL Server中的二进制文件

server|二进制 利用DataSet存取SQL Server中的二进制文件 作者 朱二 利用DataSet可以方便的对SQL Server中的二进制文件进行存取与更新操作,下面是详细的代码演示 演示环境: 数据库机器名 :s_test登陆名 :sa密码 :7890数据库名 db_test 下面建立一个表: create table tb_test(id int identity(1,1),photo image ,constraint pk_tb_test primary key(id))

C语言实现二进制文件读写详解

先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite.二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中.下面我们看看一个拷贝程序的源码: Copy.c: #include <stdio.h> #include <stdlib.h> #define MAXLEN 1024 int main(int argc, char *argv[]) { if( argc < 3 ) { printf(

C#读取二进制文件及判断文件结束的方法

网上资料中很多是通过try catch 获取文件是否读取完毕. 总觉着这种捕获异常的方式太丑陋.于是找到了另外一种更好的方式. 可直接判断文件结束. FileStream fs = File.OpenRead(path); BinaryReader brReader = new BinaryReader(fs); while (brReader.BaseStream.Position < brReader.BaseStream.Length) { //TODO } brReader.Close(

二进制文件随机存取的两种方法

以下是本人使用C++实现二进制文件随机存取的两种常用方法,写出来,让您见笑,还望方家点拨. 第一种方法:根据记录编号,对每一条记录固定位置存取,实现随机存取 设计思想: 每一条记录的记录编号,决定该记录的存取位置.如:第一条记录记录编号是1,放在位置1:第二条记录的记录编号是2,放在位置2:---,依次类推. 要修改第二条记录,首先根据记录编号计算出该记录的存储位置,然后将内置指针直接调至此处,进行修改. 新添记录,可根据它的记录编号存储到文件的相应位置. 这种随机存取方法通俗易懂,简便易行.适

WebService大讲堂之Axis2(4):二进制文件传输

在<WebService大讲堂之Axis2(2):复合类型数据的传递>中讲过,如果要传递二进制文件(如图 像.音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式进行调用.这样做 只是其中的一种方法,除此之外,在客户端还可以使用wsdl2java命令生成相应的stub类来调用 WebService,wsdl2java命令的用法详见<WebService大讲堂之Axis2(1):用POJO实现0配置的 WebService>. WebService类中包含