java的byte数组最多存储多少字节?只用FileInputStream读取文件和只用FileOutputStream写入文件会出问题吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的byte数组最多存储多少字节?只用FileInputStream读取文件和只用FileOutputStream写入文件会出问题吗相关的知识,希望对你有一定的参考价值。
用FileInputStream读取文件时,可以一次读到一个数组里吗?文件很大时,数组会溢出吗?我今天测试时,读取二十几兆的文件没问题,然后测试了一个一百多兆的文件,直接出现java heap error。设置数组时直接写的byte[] b=new byte[file.length()]; 感觉应该是数组太大的问题,请赐教!
不会,你可以设定一个指定大小的数组,然后重复读写。import java.io.*;
public class FileStreamDemo2
public static void main(String[] args) throws IOException
//创建两个文件
File inFile = new File("tcty36.rm");
File outFile = new File("newtcty36.rm");
//最大的流为60Mb,当文件的容量大于60Mb的时候便分开流
final int MAX_BYTE = 60000000;
long streamTotal = 0; //接受流的容量
int streamNum = 0; //流需要分开的数量
int leave = 0; //文件剩下的字符数
byte[] inOutb; //byte数组接受文件的数据
//创建流文件读入与写出类
FileInputStream inStream = new FileInputStream(inFile);
FileOutputStream outStream = new FileOutputStream(outFile);
//通过available方法取得流的最大字符数
streamTotal = inStream.available();
//取得流文件需要分开的数量
streamNum = (int)Math.floor(streamTotal/MAX_BYTE);
//分开文件之后,剩余的数量
leave = (int)streamTotal % MAX_BYTE;
//文件的容量大于60Mb时进入循环
if (streamNum > 0)
for(int i = 0; i < streamNum; ++i)
inOutb = new byte[MAX_BYTE];
//读入流,保存在byte数组
inStream.read(inOutb, 0, MAX_BYTE);
outStream.write(inOutb); //写出流
outStream.flush(); //更新写出的结果
//写出剩下的流数据
inOutb = new byte[leave];
inStream.read(inOutb, 0, leave);
outStream.write(inOutb);
outStream.flush();
inStream.close();
outStream.close();
参考技术A byte []b=//输入
用
DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b));
然后就可以
int i=dis.readInt();
String s=dis.readUTF();
//等等,这样读取字节中的具体数值。相当于反序列化操作。 参考技术B 5
java 中byte数组存的是啥类型的数据,byte数组有啥用
java中数组本身可以划分为一个类型.这个类型就是存放各种类型的对象或者值.至于你的问题,则可以回答为存放byte的数组应该是数组类型.或者说数组的泛型是byte.
具体作用,泛泛的说,应该是存储数据.至于存储后干什么.那就看具体需求了.比如用于显示,用于逻辑判断......等等. 参考技术A 没什么用。java中的byte是假的。
你看到它是byte 实际是java底层是按照int存储的。
在Android等手持设备的开发上有用。 参考技术B 98%的数据在存储的时候按照字节存储,所以字节类型的数据很有用啊本回答被提问者采纳 参考技术C 字节,
以上是关于java的byte数组最多存储多少字节?只用FileInputStream读取文件和只用FileOutputStream写入文件会出问题吗的主要内容,如果未能解决你的问题,请参考以下文章
java中如何计算一个字符串的byte长度(一个汉字多少字符)
Java中char,short,int,long占几个字节和多少位
java 中byte数组存的是啥类型的数据,byte数组有啥用