当前位置: 代码网 > it编程>编程语言>Java > Java中InputSteam转String的实现方法

Java中InputSteam转String的实现方法

2025年07月08日 Java 我要评论
1、inputstream转化为string1、使用inputstreamreader和stringbuilder(jdk)public class inputstream2string { p

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com