|
Author: doogie
Date: Wed Feb 10 22:43:46 2010 New Revision: 908705 URL: http://svn.apache.org/viewvc?rev=908705&view=rev Log: Add UtilIO.writeString() variants. Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java?rev=908705&r1=908704&r2=908705&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilIO.java Wed Feb 10 22:43:46 2010 @@ -20,10 +20,15 @@ import java.io.BufferedInputStream; import java.io.BufferedReader; +import java.io.File; +import java.io.FileOutputStream; import java.io.Reader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.nio.ByteBuffer; import java.nio.charset.Charset; @@ -191,4 +196,59 @@ } return sb; } + + /** Convert a \n string to a platform encoding. This uses a default + * {@link Charset UTF-8} charset. + * + * @param file where to write the converted bytes to + * @param value the value to write + */ + public static void writeString(File file, String value) throws IOException { + writeString(new FileOutputStream(file), UTF8, value); + } + + /** Convert a \n string to a platform encoding. This uses a default + * {@link Charset UTF-8} charset. + * + * @param out where to write the converted bytes to + * @param value the value to write + */ + public static void writeString(OutputStream out, String value) throws IOException { + writeString(out, UTF8, value); + } + + /** Convert a \n string to a platform encoding. This uses the + * specified charset to extract the raw bytes. + * + * @param out where to write the converted bytes to + * @param charset the charset to use to convert the raw bytes + * @param value the value to write + */ + public static void writeString(OutputStream out, String charset, String value) throws IOException { + writeString(out, Charset.forName(charset), value); + } + + /** Convert a \n string to a platform encoding. This uses the + * specified charset to extract the raw bytes. + * + * @param out where to write the converted bytes to + * @param charset the charset to use to convert the raw bytes + * @param value the value to write + */ + public static void writeString(OutputStream out, Charset charset, String value) throws IOException { + Writer writer = new OutputStreamWriter(out, charset); + String nl = System.getProperty("line.separator"); + int r = 0; + while (r < value.length()) { + int i = value.indexOf("\n", r); + if (i == -1) { + break; + } + writer.write(value.substring(r, i)); + writer.write(nl); + r = i + 1; + } + writer.write(value.substring(r)); + writer.close(); + } } Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java?rev=908705&r1=908704&r2=908705&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/UtilIOTests.java Wed Feb 10 22:43:46 2010 @@ -84,4 +84,34 @@ assertEquals("readString stream UTF-8:" + label, wanted, UtilIO.readString(new ByteArrayInputStream(toRead), "UTF-8")); assertEquals("readString stream UTF8:" + label, wanted, UtilIO.readString(new ByteArrayInputStream(toRead), UtilIO.UTF8)); } + + public void testWriteString() throws Exception { + writeStringTest_0("unix line ending", "\n", new byte[] { 0x0A }); + writeStringTest_0("mac line ending", "\r", new byte[] { 0x0D }); + writeStringTest_0("windows line ending", "\r\n", new byte[] { 0x0D, 0x0A }); + } + + private static void writeStringTest_0(String label, String lineSeparator, byte[] extra) throws IOException { + String originalLineSeparator = System.getProperty("line.separator"); + try { + System.getProperties().put("line.separator", lineSeparator); + writeStringTest_1(label + ":mark", join(trademarkBytes), "\u2122"); + writeStringTest_1(label + ":mark NL", join(trademarkBytes, extra), "\u2122\n"); + writeStringTest_1(label + ":NL mark", join(extra, trademarkBytes), "\n\u2122"); + } finally { + System.getProperties().put("line.separator", originalLineSeparator); + } + } + + private static void writeStringTest_1(String label, byte[] wanted, String toWrite) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + UtilIO.writeString(baos, toWrite); + assertEquals("writeString default:" + label, wanted, baos.toByteArray()); + baos = new ByteArrayOutputStream(); + UtilIO.writeString(baos, "UTF-8", toWrite); + assertEquals("writeString UTF-8:" + label, wanted, baos.toByteArray()); + baos = new ByteArrayOutputStream(); + UtilIO.writeString(baos, UtilIO.UTF8, toWrite); + assertEquals("writeString UTF8:" + label, wanted, baos.toByteArray()); + } } |
| Free forum by Nabble | Edit this page |
