From 23a49277c10752151dd9245698cdd8bba42ea8bc Mon Sep 17 00:00:00 2001 From: jsrobson10 Date: Sat, 20 Jun 2020 13:38:59 +1000 Subject: [PATCH] Modified the human readable serialization to use streams instead of strings, to make human readable formats able to handle an output of greater than 2GB. --- src/bdf/types/BdfArray.java | 26 ++-- src/bdf/types/BdfNamedList.java | 31 ++--- src/bdf/types/BdfObject.java | 213 +++++++++++++++++++++----------- src/bdf/types/IBdfType.java | 13 +- src/tests/Tests.java | 14 +-- 5 files changed, 183 insertions(+), 114 deletions(-) diff --git a/src/bdf/types/BdfArray.java b/src/bdf/types/BdfArray.java index 62967a5..5ff46e3 100644 --- a/src/bdf/types/BdfArray.java +++ b/src/bdf/types/BdfArray.java @@ -1,5 +1,7 @@ package bdf.types; +import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; @@ -66,39 +68,39 @@ public class BdfArray implements IBdfType, Iterable } @Override - public String serializeHumanReadable(BdfIndent indent, int it) + public void serializeHumanReadable(OutputStream stream, BdfIndent indent, int it) throws IOException { if(elements.size() == 0) { - return "[]"; + stream.write("[]".getBytes()); + return; } - String data = "["; + stream.write('['); for(int i=0;i i+1) - { - data += ", "; + if(elements.size() > i+1) { + stream.write(", ".getBytes()); } } - data += indent.breaker; + stream.write(indent.breaker.getBytes()); for(int n=0;n i+1) - { - data += ", "; + if(elements.size() > i+1) { + stream.write(", ".getBytes()); } } - data += indent.breaker; + stream.write(indent.breaker.getBytes()); for(int n=0;n