mirror of
https://github.com/stleary/JSON-java.git
synced 2026-01-24 00:03:17 -05:00
93 lines
2.3 KiB
Java
93 lines
2.3 KiB
Java
package org.json;
|
|
|
|
import java.io.IOException;
|
|
import java.io.Writer;
|
|
|
|
/**
|
|
* Performance optimised alternative for {@link java.io.StringWriter}
|
|
* using internally a {@link StringBuilder} instead of a {@link StringBuffer}.
|
|
*/
|
|
public class StringBuilderWriter extends Writer {
|
|
private final StringBuilder builder;
|
|
|
|
/**
|
|
* Create a new string builder writer using the default initial string-builder buffer size.
|
|
*/
|
|
public StringBuilderWriter() {
|
|
builder = new StringBuilder();
|
|
lock = builder;
|
|
}
|
|
|
|
/**
|
|
* Create a new string builder writer using the specified initial string-builder buffer size.
|
|
*
|
|
* @param initialSize The number of {@code char} values that will fit into this buffer
|
|
* before it is automatically expanded
|
|
*
|
|
* @throws IllegalArgumentException If {@code initialSize} is negative
|
|
*/
|
|
public StringBuilderWriter(int initialSize) {
|
|
builder = new StringBuilder(initialSize);
|
|
lock = builder;
|
|
}
|
|
|
|
@Override
|
|
public void write(int c) {
|
|
builder.append((char) c);
|
|
}
|
|
|
|
@Override
|
|
public void write(char[] cbuf, int offset, int length) {
|
|
if ((offset < 0) || (offset > cbuf.length) || (length < 0) ||
|
|
((offset + length) > cbuf.length) || ((offset + length) < 0)) {
|
|
throw new IndexOutOfBoundsException();
|
|
} else if (length == 0) {
|
|
return;
|
|
}
|
|
builder.append(cbuf, offset, length);
|
|
}
|
|
|
|
@Override
|
|
public void write(String str) {
|
|
builder.append(str);
|
|
}
|
|
|
|
@Override
|
|
public void write(String str, int offset, int length) {
|
|
builder.append(str, offset, offset + length);
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(CharSequence csq) {
|
|
write(String.valueOf(csq));
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(CharSequence csq, int start, int end) {
|
|
if (csq == null) {
|
|
csq = "null";
|
|
}
|
|
return append(csq.subSequence(start, end));
|
|
}
|
|
|
|
@Override
|
|
public StringBuilderWriter append(char c) {
|
|
write(c);
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return builder.toString();
|
|
}
|
|
|
|
@Override
|
|
public void flush() {
|
|
}
|
|
|
|
@Override
|
|
public void close() throws IOException {
|
|
}
|
|
}
|