Append InputStream object to String object
Possible Duplicate:
Read/convert an InputStream to a String
I'm trying to append data from a InputStream object to a string as follows:
byte[] buffer = new byte[8192];
InputStream stdout;
String s = "";
while(IsMoreInputDataAvailable()) {
int length = this.stdout.read(buffer);
s += new String(this.buffer, 0, length, "ASCII");
Is there an easier way of doing this without using Apache or such libraries?
The usual way to read character data from an InputStream
is to wrap it in a Reader
. InputStreams are for binary data, Readers are for character data. The appropriate Reader
to read from an InputStream
is the aptly named InputStreamReader
:
Reader r = new InputStreamReader(stdout, "ASCII");
char buf = new char[4096];
int length;
StringBuilder s = new StringBuilder();
while ((length = r.read(buf)) != -1) {
s.append(buf, 0, length);
}
String str = s.toString();
Note that appending to a String
repeatedly inside a loop is usually a bad idea (because each time you'll need to copy the whole string), so I'm using a StringBuilder
here instead.
Here is a link to several ways to do it (with and without external libraries). A way to do it (extracted from the above link) is using a Java Scanner (since Java 5):
public class InputStreamTest {
public static void main(String args[]) throws FileNotFoundException {
FileInputStream fis = new FileInputStream("c:/sample.txt");
String inputStreamString = new Scanner(fis,"UTF-8").useDelimiter("A").next();
System.out.println(inputStreamString);
}
}
链接地址: http://www.djcxy.com/p/13732.html