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写入文件会出问题吗的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1854.人口最多的年份 Maximum Population Year(Java)

mysql最多存多少条数据

java中list最多可以存储多少条数据?40万可以吗

已知线性表最多可能有20个元素,存储每个元素需要8字节,存储每个指针需要4字节。当元素个数为( )时使用单链表比使用数组存储此线性表更加节约空间。

mysql中text可以存储多少个字

mysql中text可以存储多少个字