1、inputstream转化为string
1、使用inputstreamreader和stringbuilder(jdk)
public class inputstream2string {
public static void main(string[] args) {
try {
inputstream inputstream = new fileinputstream("e:/duckandjava/io/testfile.txt"); //路径修改为本地文件所在的位置
char[] buffer = new char[1024]; //根据需要的数组大小进行自定义
stringbuilder out = new stringbuilder();
reader in = new inputstreamreader(inputstream, "utf-8");
for (int numread; (numread = in.read(buffer, 0, buffer.length)) > 0; ) {
out.append(buffer, 0, numread);
}
string mystring = out.tostring();
system.out.println("mystring = " + mystring);
}catch (ioexception e){
e.printstacktrace();
}
}
}2、使用inputstream.read()andstringbuilder
stringbuilder sb = new stringbuilder();
for (int ch; (ch = inputstream.read()) != -1; ) {
sb.append((char) ch);
}
string mystring = sb.tostring();3、使用bytearrayoutputstreamandinputstream.read
bytearrayoutputstream result = new bytearrayoutputstream();
byte[] buffer = new byte[1024];
for (int length; (length = inputstream.read(buffer)) != -1; ) {
result.write(buffer, 0, length);
}
string mystring = result.tostring("utf-8");bytearrayoutputstream result = new bytearrayoutputstream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputstream.read(buffer)) != -1) {
result.write(buffer, 0, length);
}
string str = result.tostring(standardcharsets.utf_8.name());
return str;bufferedinputstream bis = new bufferedinputstream(inputstream);
bytearrayoutputstream buf = new bytearrayoutputstream();
int result = bis.read();
while(result != -1) {
buf.write((byte) result);
result = bis.read();
}
string str = buf.tostring();
return str;4、使用bufferedinputstream和bytearrayoutputstream
bufferedinputstream bis = new bufferedinputstream(inputstream);
bytearrayoutputstream buf = new bytearrayoutputstream();
for (int result = bis.read(); result != -1; result = bis.read()) {
buf.write((byte) result);
}
string mystring = buf.tostring("utf-8");5、使用bufferedreader
string newline = system.getproperty("line.separator");
bufferedreader reader = new bufferedreader(new inputstreamreader(inputstream));
stringbuilder result = new stringbuilder();
for (string line; (line = reader.readline()) != null; ) {
if (result.length() > 0) {
result.append(newline);
}
result.append(line);
}
string mystring = result.tostring();stringbuilder sb = new stringbuilder();
string line;
bufferedreader br = new bufferedreader(new inputstreamreader(inputstream));
while ((line = br.readline()) != null) {
sb.append(line);
}
string str = sb.tostring();
return str;string result = new bufferedreader(new inputstreamreader(inputstream))
.lines().collect(collectors.joining(system.lineseparator()));string result = new bufferedreader(new inputstreamreader(inputstream))
.lines().parallel().collect(collectors.joining(system.lineseparator()));6、使用 stream api 或 parallel stream api
string mystring = new bufferedreader(new inputstreamreader(inputstream)).lines().collect(collectors.joining("\n"));或
string mystring = new bufferedreader(new inputstreamreader(inputstream)).lines().parallel().collect(collectors.joining("\n"));7、使用stringwriter和ioutils.copy (apache commons)
stringwriter writer = new stringwriter(); ioutils.copy(inputstream, writer, standardcharsets.utf_8.name()); return writer.tostring();
甚至可以直接这样用
string result = ioutils.tostring(inputstream, standardcharsets.utf_8);
8、使用charstreams(google guava)
string result = charstreams.tostring(new inputstreamreader(inputstream, charsets.utf_8));
//方法十二: string str = new string(bytestreams.tobytearray(inputstream))
分别按照字符串长度来进行测试。
当使用的是一个小字符串(length=175),得到的性能测试结果如下:

当使用的是一个长字符串(length=50100),得到的性能测试结果如下:

为了更加直观,按照字符串的长度与相应函数消耗的平均时间,做了如下的表格:

更加直观的表格图,如下:

9、jdk原生提供
byte[] bytes = new byte[0]; bytes = new byte[inputstream.available()]; inputstream.read(bytes); string str = new string(bytes);
scanner s = new scanner(inputstream).usedelimiter("\\a");
string str = s.hasnext() ? s.next() : "";string resource = new scanner(inputstream).usedelimiter("\\z").next();
return resource;2、string转化为inputstream
2.1 jdk原生提供
inputstream is = new bytearrayinputstream(str.getbytes());
2.2 apache common提供
inputstream targetstream = ioutils.toinputstream(str, standardcharsets.utf_8.name());
2.3 google guava提供
inputstream targetstream =
new readerinputstream(charsource.wrap(str).openstream(), standardcharsets.utf_8.name());到此这篇关于java中inputsteam转string的实现方法的文章就介绍到这了,更多相关java inputsteam转string内容请搜索代码网以前的文章或继续浏览下
发表评论