将数据写入String

时间:2012-09-17 11:16:02

标签: java string object

这可能很容易解决,但我现在已经坚持了一段时间。我有一个while循环,我用来写数据。我想将while循环中的数据写入String。

public void dumpPart(Part p) throws Exception {
    InputStream is = p.getInputStream();
    if (!(is instanceof BufferedInputStream)) {
        is = new BufferedInputStream(is);
    }
    int c;
    System.out.println("Message: ");
    while ((c = is.read()) != -1) {
        System.out.write(c);  //I want to write this data to a String.

    }
    sendmail.VerstuurEmail(mpMessage, kenmerk);
}

解决:

public void dumpPart(Part p) throws Exception {
    InputStream is = p.getInputStream();
    if (!(is instanceof BufferedInputStream)) {
        is = new BufferedInputStream(is);
    }
    int c;
     final StringWriter sw = new StringWriter();
    System.out.println("Message: ");
    while ((c = is.read()) != -1) {
        sw.write(c);
    }
    mpMessage = sw.toString();;
    sendmail.VerstuurEmail(mpMessage, kenmerk);
}

感谢您的帮助。

6 个答案:

答案 0 :(得分:6)

您可以考虑java.io.StringWriter(从JDK 1.4+开始):

 System.out.println("Message: ");

 final StringWriter sw = new StringWriter();

 int c;
 while ((c = is.read()) != -1) {
    sw.write(c);
 }

 String data = sw.toString();

答案 1 :(得分:5)

我会使用IOUtils.toString(inputStream)或类似的东西。

答案 2 :(得分:2)

而不是System.out调用只是在循环之前初始化一个StringBuffer并附加到它:

StringBuffer s = new StringBuffer();
while ((c = is.read()) != -1) {
  s.append((char) c);
}

答案 3 :(得分:1)

最好使用StringBuilder对象而不是StringBuffer(Difference between StringBuilder and StringBuffer

public void dumpPart(Part p) throws Exception {
    InputStream is = p.getInputStream();
    if (!(is instanceof BufferedInputStream)) {
        is = new BufferedInputStream(is);
    }
    int c;
    StringBuilder sb = new StringBuilder();
    System.out.println("Message: ");
    while ((c = is.read()) != -1) {
        sb.append(c);

    }
    String result= sb.toString();
    sendmail.VerstuurEmail(mpMessage, kenmerk);
}

答案 4 :(得分:1)

一种可能性是:

        int c;
    System.out.println("Message: ");
    StringWriter sw = new StringWriter();
    while ((c = is.read()) != -1) {
        sw.write(c);
    }
    System.out.println(sw.toString());

答案 5 :(得分:1)

还有一种方法:

StringBuffer buffer = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = is.read(b)) != -1;) {
  buffer.append(new String(b, 0, n));
}
String str = buffer.toString();