From a161294349669f996ca05c059cd2d721424f038d Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 4 Sep 2019 12:34:59 +0200 Subject: [PATCH] [New] Added RemoveCRFilterWriter for use in XML with Windows and CRLF --- .../strolch/utils/RemoveCRFilterWriter.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 li.strolch.utils/src/main/java/li/strolch/utils/RemoveCRFilterWriter.java diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/RemoveCRFilterWriter.java b/li.strolch.utils/src/main/java/li/strolch/utils/RemoveCRFilterWriter.java new file mode 100644 index 000000000..72661609d --- /dev/null +++ b/li.strolch.utils/src/main/java/li/strolch/utils/RemoveCRFilterWriter.java @@ -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); + } + } +} \ No newline at end of file