ByteArrayOutputStream转成String

ByteArrayOutputStream out = new ByteArrayOutputStream();

//serializer.setOutput(out, "utf-8");

 new String(out.toByteArray(), "utf-8");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
public static String loadAFileToStringDE1(File f) throws IOException { long beginTime = System.currentTimeMillis(); InputStream is = null; String ret = null; try { is = new BufferedInputStream( new FileInputStream(f) ); long contentLength = f.length(); ByteArrayOutputStream outstream = new ByteArrayOutputStream( contentLength > 0 ? (int) contentLength : 1024); byte[] buffer = new byte[4096]; int len; while ((len = is.read(buffer)) > 0) { outstream.write(buffer, 0, len); } outstream.close(); ret = outstream.toString(); //byte[] ba = outstream.toByteArray(); //ret = new String(ba); } finally { if(is!=null) {try{is.close();} catch(Exception e){} } } long endTime = System.currentTimeMillis(); System.out.println("方法1用时"+ (endTime-beginTime) + "ms"); return ret; } public static String loadAFileToStringDE2(File f) throws IOException { long beginTime = System.currentTimeMillis(); InputStream is = null; String ret = null; try { is = new FileInputStream(f) ; long contentLength = f.length(); byte[] ba = new byte[(int)contentLength]; is.read(ba); ret = new String(ba); } finally { if(is!=null) {try{is.close();} catch(Exception e){} } } long endTime = System.currentTimeMillis(); System.out.println("方法2用时"+ (endTime-beginTime) + "ms"); return ret; } public static String loadAFileToStringDE3(File f) throws IOException { long beginTime = System.currentTimeMillis(); BufferedReader br = null; String ret = null; try { br = new BufferedReader(new FileReader(f)); String line = null; StringBuffer sb = new StringBuffer((int)f.length()); while( (line = br.readLine() ) != null ) { sb.append(line).append(LINE_BREAK); } ret = sb.toString(); } finally { if(br!=null) {try{br.close();} catch(Exception e){} } } long endTime = System.currentTimeMillis(); System.out.println("方法3用时"+ (endTime-beginTime) + "ms"); return ret; } 3个方法去读取一个大于50M的文件,当不设置jvm参数时都OutofMemery,当设置-Xmx128M时。只有方法3 可以通过,设置到-Xmx256M时也只有方法3可以通过,干脆设置512M,都可以了,运行时间如果正常的话一般都在4~5S
### 回答1: ByteArrayOutputStream 数据可以通过使用 String 的构造函数将其转换为字符串。例如:String str = new String(byteArrayOutputStream.toByteArray()); ### 回答2: ByteArrayOutputStream是Java中的一个字节输出流,它可以将数据写入到内存中的字节数组中。要将ByteArrayOutputStream中的数据转换成String,可以按照以下步骤进行操作: 第一步,获取ByteArrayOutputStream中的字节数组。 通过调用bytearrayoutputstream的toByteArray()方法,可以获取ByteArrayOutputStream中的字节数组。 第二步,使用字节数组构造一个String对象。 通过调用String的构造函数,使用获取到的字节数组作为参数,可以创建一个新的String对象。 例如,下面是一个示例代码: ```java ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write("Hello World".getBytes()); byte[] byteArray = baos.toByteArray(); String str = new String(byteArray); System.out.println(str); ``` 上述代码首先创建了一个ByteArrayOutputStream对象,并将字符串"Hello World"写入其中。然后,通过调用toByteArray()方法,将ByteArrayOutputStream中的数据转换成字节数组byteArray。最后,通过使用字节数组构造一个新的String对象,将字节数组中的数据转换成String对象。最终,将转换后的字符串输出到控制台。 需要注意的是,字节数据转换成字符串时,必须确保字节数据的编码方式与字符串构造函数中指定的字符编码方式相匹配,否则可能会出现乱码的情况。 ### 回答3: ByteArrayOutputStream 是一个在内存中创建字节数组缓冲区的输出流,可以将数据写入该缓冲区中。要将 ByteArrayOutputStream 中的数据转换为字符串,可以使用其 toString() 方法。 首先,将 ByteArrayOutputStream 对象转换为 byte 数组,可以使用其 toByteArray() 方法。然后,将 byte 数组转换为字符串,可以使用 String 类的构造函数,将 byte 数组和指定的字符集作为参数传入。 下面是一个示例代码: ```java // 创建一个 ByteArrayOutputStream 对象 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 向 ByteArrayOutputStream 写入数据 byteArrayOutputStream.write("Hello World".getBytes()); // 将 ByteArrayOutputStream 转换为 byte 数组 byte[] byteArray = byteArrayOutputStream.toByteArray(); // 将 byte 数组转换为字符串,使用默认的字符集 String str = new String(byteArray); System.out.println(str); ``` 以上代码使用默认的字符集将 byte 数组转换为字符串,并将字符串输出到控制台。可以根据需要,传入不同的字符集作为参数来指定要使用的字符集。 注意,数据转换为字符串时,应该使用与数据编码一致的字符集,否则可能会出现乱码或数据丢失的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值