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内容请搜索代码网以前的文章或继续浏览下
发表评论