InputStream转换为String, byte[] data = new byte[1024]详解
/**
* 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中,直到写入到字符串末尾
InputStream转换为String, byte[] data = new byte[1024]详解的更多相关文章
- 【DataGuard】部署Data Guard相关参数详解 (转载)
原文地址:[DataGuard]部署Data Guard相关参数详解 作者:secooler 有关物理Data Guard部署参考<[DataGuard]同一台主机实现物理Data Gua ...
- 将输入流InputStream转换为String
public static String convertStreamToString(InputStream is) { /* * To convert the InputStream to Stri ...
- java中String是对象还是类?详解java中的String
有很多人搞不懂对象和类的定义.比如说java中String到底是对象还是类呢? 有人说String 既可以说是类,也可以说是对象. 其实他这么说也没问题, 类和对象其实都是一个抽象的概念. 我们可以把 ...
- Oracle 10g Data Pump Expdp/Impdp 详解
Data Pump 介绍 在第一部分看了2段官网的说明, 可以看出数据泵的工作流程如下: (1)在命令行执行命令 (2)expdp/impd 命令调用DBMS_DATAPUMP PL/SQL包. 这个 ...
- 【Stackoverflow好问题】将InputStream转换为String
不重复造轮子. 最可靠的方法,或者使用Apache commons IOUtils 这样简单几行代码就搞定了 StringWriter writer = new StringWriter(); IO ...
- C++ string 类的 find 方法实例详解
1.C++ 中 string 类的 find 方法列表 size_type std::basic_string::find(const basic_string &__str, size_ty ...
- intent-filter data Uri 意图过滤器 详解
组件的intent-filter属性 如果一个 Intent 请求在一片数据(Uri)上执行一个动作(Action), Android 如何知道哪个应用程序的哪个组件能用来响应这个请求 ...
- 字符串(String)几个常用方法的详解
String:(字符串) indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject.indexOf(searchvalue,fromindex) searc ...
- Spring Data JPA @EnableJpaRepositories配置详解
@EnableJpaRepositories注解用于Srping JPA的代码配置,用于取代xml形式的配置文件,@EnableJpaRepositories支持的配置形式丰富多用,本篇文章详细讲解. ...
随机推荐
- 《Mysql技术内幕,Innodb存储引擎》——事物
事物 事物中的操作要么都成功要么都不做,这是事物的目的,也是事物模型与文件系统的重要特征之一. 扁平事物(Flat Transactions) 所有操作都处于同一层次,要么都做要么都执行要么都回滚,无 ...
- css 设置滚动条的样式
/*移动端显示滚动条*/ .layui-table-body::-webkit-scrollbar { -webkit-appearance: none; } .layui-table-body::- ...
- docker容器网络通信原理分析(转)
概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求.而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信.而本文将分别针对这两 ...
- 数据库-转换sql语句
文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...
- Java指定保留小数位数的方法
package com.qiyuan.util; import java.math.BigDecimal; import java.math.RoundingMode; import java.tex ...
- rails中params[:id]与params["id"]分析
写这个帖子的缘由是因为在页面参数传到rails的controller时用params[:]和params[""]都可以取到值: [1] pry(#<BooksControll ...
- Rails 增加一个模型(model)
之前我们已经看到用脚手架运行的model程序.现在是时候第二个model了. 第二个model用来处理post的评论. 7.1 新建一个模型 Rails模型使用一个单一的的名称,其相应的数据库表使 ...
- webbrowser打开新窗口事件+=
测试可用: private void SaveSnapshot_Click(object sender, EventArgs e) { this.webBrowser1.Navigate(txturl ...
- 重置Root用户密码
在忘记root用户密码是用于重置root用户密码: 1.开机按e. 2.在linux16开头的一行的末尾添加rd.break,按ctrl+x. 3.依次执行命令: mount -o remount,r ...
- hadoop学习笔记(五):HDFS Shell命令
一.HDFS文件命令 以下是比较重要的一些命令: [root@master01 hadoop]# hadoop fs -ls / //查看根目录下的所有文件 [root@master01 hadoop ...