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支持的配置形式丰富多用,本篇文章详细讲解. ...
随机推荐
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用自定义类
1.新建空Qt工程 2.新建C++类HelloQt 3.新建ui文件,添加部件,重命名主窗体(对话框)类名HelloQt,构建生成ui头文件 4.修改头文件helloqt.h #ifndef HELL ...
- 《Mysql技术内幕,Innodb存储引擎》——事物
事物 事物中的操作要么都成功要么都不做,这是事物的目的,也是事物模型与文件系统的重要特征之一. 扁平事物(Flat Transactions) 所有操作都处于同一层次,要么都做要么都执行要么都回滚,无 ...
- Tensorflow 方法记录
1.tf.convert_to_tensor:传入的list必须是一个有固定长度的list,如果为2维的list,第二维的list的长度必须是固定. 2.tf.layers.conv1d(),默认宽卷 ...
- php通过生成动态变量(变量名中还有变量)
借鉴:http://blog.sina.com.cn/s/blog_7193eeac0100zwld.html 如果想for循环生成变量 如: $a1,$a2,$a3.... $name = &quo ...
- java.text包
JDK在java.text包中,提供了对显示对象格式化的接口.类及异常处理,这里我们只来谈一谈text包中的format类及其子类.其中,最重要的是两个差不多互为“逆运算”的方法format(将某对象 ...
- vue 2.x之组件的数据传递(一)
这是根据官方提供的脚手架vue-cli搭建,通过简单的案例来介绍vue数据的传递的方式,根据自己平时用到的,来做简单的总结: 1.父组件传递数据给子组件 父组件传递数据给子组件,需要把子组件引入,并挂 ...
- log4配置
log4j 和 log4j2 方式一:log4j2.xml 添加 jar 包 <!-- log4j-core --> <!-- <dependency> <grou ...
- 面试1 SQL SERVER 查询第20行到30之间的数据
SQL SERVER 查询第20行到30之间的数据 1.先查询前20行的ID,后查询除去20条记录的前10条记录 SELECT TOP 10 * FROM tbBank WHERE BankID NO ...
- Tomcat配置列表显示
找到tomcat安装的conf文件下的web.xml文件 C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\web.xml 打开后 ...
- 防止TableView 上的tap手势隔断 cell的选择
遵循UIGestureRecognizerDelegate协议: 1.0添加手势 - (void)addTapGest { UITapGestureRecognizer *tap = [[U ...