Fast string read
This commit is contained in:
parent
9faebd75a0
commit
7177f5944b
@ -2,6 +2,8 @@ package it.cavallium.buffer;
|
|||||||
|
|
||||||
import it.cavallium.stream.SafeByteArrayInputStream;
|
import it.cavallium.stream.SafeByteArrayInputStream;
|
||||||
import it.cavallium.stream.SafeDataInputStream;
|
import it.cavallium.stream.SafeDataInputStream;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|
||||||
@ -39,4 +41,16 @@ public class BufDataInput extends SafeDataInputStream {
|
|||||||
public boolean markSupported() {
|
public boolean markSupported() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String readUTF() {
|
||||||
|
var length = this.readUnsignedShort();
|
||||||
|
this.skipNBytes(length);
|
||||||
|
return this.in.readString(length, StandardCharsets.UTF_8);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String readString(int length, Charset charset) {
|
||||||
|
return in.readString(length, charset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package it.cavallium.stream;
|
package it.cavallium.stream;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
/** Simple, fast and repositionable byte-array input stream.
|
/** Simple, fast and repositionable byte-array input stream.
|
||||||
*
|
*
|
||||||
* <p><strong>Warning</strong>: this class implements the correct semantics
|
* <p><strong>Warning</strong>: this class implements the correct semantics
|
||||||
@ -119,6 +121,15 @@ public class SafeByteArrayInputStream extends SafeMeasurableInputStream implemen
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String readString(int length, Charset charset) {
|
||||||
|
if (this.available() < length) {
|
||||||
|
throw new IndexOutOfBoundsException(this.length);
|
||||||
|
}
|
||||||
|
position += length;
|
||||||
|
return new String(this.array, position, length, charset);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long position() {
|
public long position() {
|
||||||
return position;
|
return position;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
package it.cavallium.stream;
|
package it.cavallium.stream;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@ -124,6 +125,11 @@ public class SafeDataInputStream extends SafeFilterInputStream implements SafeDa
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String readString(int length, Charset charset) {
|
||||||
|
return in.readString(length, charset);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See the general contract of the {@code readBoolean}
|
* See the general contract of the {@code readBoolean}
|
||||||
* method of {@code DataInput}.
|
* method of {@code DataInput}.
|
||||||
@ -429,7 +435,7 @@ public class SafeDataInputStream extends SafeFilterInputStream implements SafeDa
|
|||||||
* @see SafeDataInputStream#readUTF(SafeDataInputStream)
|
* @see SafeDataInputStream#readUTF(SafeDataInputStream)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public final @NotNull String readUTF() {
|
public @NotNull String readUTF() {
|
||||||
return readUTF(this);
|
return readUTF(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package it.cavallium.stream;
|
package it.cavallium.stream;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@code FilterInputStream} contains
|
* A {@code FilterInputStream} contains
|
||||||
* some other input stream, which it uses as
|
* some other input stream, which it uses as
|
||||||
@ -207,4 +209,9 @@ public class SafeFilterInputStream extends SafeInputStream {
|
|||||||
public boolean markSupported() {
|
public boolean markSupported() {
|
||||||
return in.markSupported();
|
return in.markSupported();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String readString(int length, Charset charset) {
|
||||||
|
return in.readString(length, charset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package it.cavallium.stream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -126,6 +127,10 @@ public abstract class SafeInputStream extends InputStream {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String readString(int length, Charset charset) {
|
||||||
|
return new String(readNBytes(length), charset);
|
||||||
|
}
|
||||||
|
|
||||||
public long skip(long n) {
|
public long skip(long n) {
|
||||||
long remaining = n;
|
long remaining = n;
|
||||||
int nr;
|
int nr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user