You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

WriterOutputStream.java 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. /* $Id$ */
  18. package org.apache.fop.util;
  19. import java.io.IOException;
  20. import java.io.OutputStream;
  21. import java.io.Writer;
  22. /**
  23. * An OutputStream wrapper for a Writer.
  24. */
  25. public class WriterOutputStream extends OutputStream {
  26. private Writer writer;
  27. private String encoding;
  28. /**
  29. * Creates a new WriterOutputStream.
  30. * @param writer the Writer to write to
  31. */
  32. public WriterOutputStream(Writer writer) {
  33. this(writer, null);
  34. }
  35. /**
  36. * Creates a new WriterOutputStream.
  37. * @param writer the Writer to write to
  38. * @param encoding the encoding to use, or null if the default encoding should be used
  39. */
  40. public WriterOutputStream(Writer writer, String encoding) {
  41. this.writer = writer;
  42. this.encoding = encoding;
  43. }
  44. /**
  45. * {@inheritDoc}
  46. */
  47. public void close() throws IOException {
  48. writer.close();
  49. }
  50. /**
  51. * {@inheritDoc}
  52. */
  53. public void flush() throws IOException {
  54. writer.flush();
  55. }
  56. /**
  57. * {@inheritDoc}
  58. */
  59. public void write(byte[] buf, int offset, int length) throws IOException {
  60. if (encoding != null) {
  61. writer.write(new String(buf, offset, length, encoding));
  62. } else {
  63. writer.write(new String(buf, offset, length));
  64. }
  65. }
  66. /**
  67. * {@inheritDoc}
  68. */
  69. public void write(byte[] buf) throws IOException {
  70. write(buf, 0, buf.length);
  71. }
  72. /**
  73. * {@inheritDoc}
  74. */
  75. public void write(int b) throws IOException {
  76. write(new byte[] {(byte)b});
  77. }
  78. }