这可能很容易解决,但我现在已经坚持了一段时间。我有一个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);
}
感谢您的帮助。
答案 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();