/**
* This file created at 2018年2月28日.
*
* Copyright (c) 2002-2018 Bingosoft, Inc. All rights reserved.
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException; /**
* <code>{@link ByteTest}</code>
*
* TODO : document me
*
* @author ke
*/
public class ByteTest { public static void main(String[] args) {
String inputStr = "hello123456";
String outputStr = "";
try {
InputStream inputStream = new ByteArrayInputStream(inputStr.getBytes("UTF-8")); ///这里需要用try...catch...不然报错
// ByteArrayInputStream:ByteArrayInputStream(byte[] buf)
// 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
// String:byte[] getBytes(Charset charset)
// 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
outputStr = changeInputStream(inputStream, "utf-8");
System.out.println(outputStr);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} public static String changeInputStream(InputStream inputStream, String encode) {
String res = "";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// byte[] data = new byte[100];///输出 hello123456
byte[] data = new byte[5];///每次读取5个字节
int len = 0;
try {
while ((len = inputStream.read(data)) != -1) { ////inputStream-->data[]
// InputStream: int read(byte[] b)
// 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
// 返回:
// 读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回 -1。 outputStream.write(data, 0, len);/////outputStream<--data[]
// ByteArrayOutputStream: void write(byte[] b, int off, int len)
// 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte 数组输出流。
}
res = new String(outputStream.toByteArray(), encode);
// ByteArrayOutputStream: byte[] toByteArray()
// 创建一个新分配的 byte 数组。
// String: String(byte[] bytes, Charset charset)
// 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}//changeInputStream }

我最想说明的是,虽然data[]的长度比string短,但仍然也会输出string的所有字符,不会只输出data[]的长度的字符串

第一次取前5个字符写入outputStream中,往后都是每次写入5个字符到outputStream中,直到写入到字符串末尾

最新文章

  1. Andriod学习笔记3:Mac 平台下搭建 CLion 集成开发环境
  2. Node.js入门笔记(1):基本概念
  3. Android IOS WebRTC 音视频开发总结(八十二)-- VP8对VP9,质量还是码率?
  4. 救命 ,IE,崩溃
  5. uname是什么?
  6. Azure CDN 启用HTTPS
  7. 对.net系统架构改造的一点经验和教训(转)
  8. [Cocoa]深入浅出 Cocoa 之消息
  9. POJ 1845 Sumdiv#质因数分解+二分
  10. ActiveMQ 学习第二弹
  11. Python内置函数(9)——int
  12. set命令详解
  13. express中遇到的一个小问题“403”
  14. SAP MM GR-based IV, 无GR不能IV?
  15. Dijkstra的应用
  16. XXE攻防技术
  17. python 守护进程,监控进程
  18. SpringBoot 6.SpringBoot使用 Log4j2 实现日志输出
  19. java编写service详细笔记 - centos7.2实战笔记(windows类似就不在重复了)
  20. TFS二次开发01——TeamProjectsPicher

热门文章

  1. kubernetes ingress到pod的数据流
  2. 【广州.NET社区推荐】.NETCore 平台上的日志集成组件 TomatoLog
  3. android学习-LocationManager(一)-
  4. Nodejs学习笔记(五)—Express安装入门与模版引擎ejs
  5. XML 实体
  6. 搭建jenkins
  7. Java对象的强、软、弱和虚引用+ReferenceQueue
  8. CSS Sprite 精灵图
  9. vb.net的String类型和Bytes转换(C#也适用)
  10. SEO记录-1