[New] Added RemoveCRFilterWriter for use in XML with Windows and CRLF

This commit is contained in:
Robert von Burg 2019-09-04 12:34:59 +02:00
parent 48b0639b16
commit a161294349
1 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,51 @@
package li.strolch.utils;
import java.io.FilterWriter;
import java.io.IOException;
import java.io.Writer;
public class RemoveCRFilterWriter extends FilterWriter {
public RemoveCRFilterWriter(Writer wrappedWriter) {
super(wrappedWriter);
}
@Override
public void write(int c) throws IOException {
if (c != (int) ('\r')) {
super.write(c);
}
}
@Override
public void write(char[] cbuf, int offset, int length) throws IOException {
int localOffset = offset;
for (int i = localOffset; i < offset + length; ++i) {
if (cbuf[i] == '\r') {
if (i > localOffset) {
super.write(cbuf, localOffset, i - localOffset);
}
localOffset = i + 1;
}
}
if (localOffset < offset + length) {
super.write(cbuf, localOffset, offset + length - localOffset);
}
}
@Override
public void write(String str, int offset, int length) throws IOException {
int localOffset = offset;
for (int i = localOffset; i < offset + length; ++i) {
if (str.charAt(i) == '\r') {
if (i > localOffset) {
super.write(str, localOffset, i - localOffset);
}
localOffset = i + 1;
}
}
if (localOffset < offset + length) {
super.write(str, localOffset, offset + length - localOffset);
}
}
}