将InputStream对象追加到String对象
可能重复:
读取/转换InputStream为字符串
我试图将InputStream对象的数据附加到一个字符串,如下所示:
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");
有没有更简单的方法来做到这一点,而不使用Apache或这样的库?
从InputStream
读取字符数据的常用方法是将其包装在Reader
。 InputStreams用于二进制数据,读者用于字符数据。 要从InputStream
读取的适当Reader
是恰当命名的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();
请注意,在循环内重复添加String
通常是一个坏主意(因为每次需要复制整个字符串),所以我在此使用StringBuilder
。
这里有几种方法的链接(带和不带外部库)。 一种方法(从上面的链接中提取)使用Java扫描程序(自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/13731.html