1
我创建与文件名,文件内容类型和FILEDATA ASN1格式的文件时,曾经我导入大尺寸的文件时,它给人的Java堆空间错误。ASN1文件创建给错误的大文件大小
ASN1EncodableVector seq = new ASN1EncodableVector();
seq.add(new DERTaggedObject(false, 0, new DERSequence(new DERUTF8String(new File(filePath).getName()))));
seq.add(new DERTaggedObject(false, 1, new DERSequence(new DERUTF8String(fileContentType))));
seq.add(new DEROctetString(fileDataInBytes));
ASN1InputStream tempstream=new ASN1InputStream(new ByteArrayInputStream(bytesArray));
ASN1Sequence seq1=(ASN1Sequence)tempstream.readObject();
seq.add((ASN1Encodable) seq1);
byte[] filebytes= new DERSequence(seq).getEncoded();//On this line i am getting error of heap size
FileUtils.writeByteArrayToFile(new File(fileName) , filebytes);
有没有其他方法可以做同样的事情。
感谢设置inital和最大堆大小的数据答复我可以在文件中逐字节追加。你能解释你的代码吗?如何嵌入文件? –
是的..你可以做that.You必须确保的byte []的大小不是很高,可以同时选中writeByteArrayToFile.It的重载方法已经可以抵消由JVM在其heap.You进行管理,长度参数来确定字节和位置的长度 –
我的问题是,只有我必须允许具有更大尺寸的文件。以及为什么byte []变得非常高。 ,之所以我收到这条线上的字节[] filebytes =新DERSequence(SEQ)错误.getEncoded(); 编码计算更多的字节,为什么堆大小变满。 –