18

I'm new in Java and learning Java ME development. I got stuck in this conversion. Please help me to convert StringBuffer to InputStream. Thanks!

bharath
  • 14,283
  • 16
  • 57
  • 95
masiboo
  • 4,537
  • 9
  • 75
  • 136

3 Answers3

26

See the class ByteArrayInputStream. For example:

public static InputStream fromStringBuffer(StringBuffer buf) {
  return new ByteArrayInputStream(buf.toString().getBytes());
}

Note that you might want to use an explicit character encoding on the getBytes() method, e.g.:

return new ByteArrayInputStream(buf.toString().getBytes(StandardCharsets.UTF_8));

(Thanks @g33kz0r)

maerics
  • 151,642
  • 46
  • 269
  • 291
  • `return new ByteArrayInputStream(sb.toString().getBytes(StandardCharsets.UTF_8));` –  Nov 12 '13 at 17:42
8

See if you can get the StringBuffer to a byte[] then use a ByteArrayInputStream.

gnat
  • 6,213
  • 108
  • 53
  • 73
2

This is the best answer I found on Java Examples

import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class StringBufferToInputStreamExample {
        public static void main(String args[]){
                //create StringBuffer object
                StringBuffer sbf = new StringBuffer("StringBuffer to InputStream Example");
                /*
                 * To convert StringBuffer to InputStream in Java, first get bytes
                 * from StringBuffer after converting it into String object.
                 */
                byte[] bytes = sbf.toString().getBytes();
                /*
                 * Get ByteArrayInputStream from byte array.
                 */
                InputStream inputStream = new ByteArrayInputStream(bytes);
                System.out.println("StringBuffer converted to InputStream");
        }
}
gtgaxiola
  • 9,241
  • 5
  • 42
  • 64