Skip to content

ReaderRead

Mehdi Mohammadi edited this page Dec 29, 2013 · 1 revision

Note:This feature will be available in later releases.

java.io.Reader.read in Java returns -1 if end of the stream has been reached but similar method in .Net (System.IO.TextReader.Read) returns number of characters read, so it returns 0 if end of the stream has been reached.

Java code (from Lucene) like this:

while (true) {
    length = input.read(this.buffer);
    if (length == -1) break;
    buffer.append(this.buffer, 0, length);
}

will fail in .Net.

instead of patching resulting code or translating it to:

while (true) {
    length = ConvertReaderReadReturn(input.read(this.buffer));
    if (length == -1) break;
    buffer.append(this.buffer, 0, length);
}

we can write more or less intelligent classes which can translate it to:

while (true) {
    length = input.read(this.buffer);
    if (length == 0) break;
    buffer.append(this.buffer, 0, length);
}

This would be hard in some situations but reusability across projects is worth the effort.

We call these transformers Adapter.

Clone this wiki locally