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支持的配置形式丰富多用,本篇文章详细讲解. ...
随机推荐
- Chapter 3 Phenomenon——5
I saw several things simultaneously. 我同时看见了几件事情. Nothing was moving in slow motion,the way it does i ...
- 解决Nginx 504 Gateway Time-out问题
解决方案:在http里设置FastCGI相关参数,如: worker_processes 1; events { worker_connections 1024; } http { include m ...
- 机器学习--Gradient Boosting Machine(GBM)调参方法详解
一.GBM参数 总的来说GBM的参数可以被归为三类: 树参数:调节模型中每个决策树的性质 Boosting参数:调节模型中boosting的操作 其他模型参数:调节模型总体的各项运作 1.树参数 现在 ...
- spring boot 2.0 源码分析(三)
通过上一章的源码分析,我们知道了spring boot里面的listeners到底是什么(META-INF/spring.factories定义的资源的实例),以及它是创建和启动的,今天我们继续深入分 ...
- 高云的jQuery源码分析笔记
(function( window, undefined ) { // 构造jQuery对象 var jQuery = function( selector, context ) { return n ...
- 11.Proxy
Proxy Proxy 概述 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程. ...
- sql语句中出现笛卡尔乘积 SQL查询入门篇
2014-12-29 凡尘工作室 阅 34985 转 95 本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 ...
- spring下redis使用资料
参考资料地址: spring集成redis Spring缓存注解@Cacheable.@CacheEvict.@CachePut使用 redis常用命令 redis持久化(RDB与AOF) Redis ...
- clipboard.js实现复制功能
项目地址:https://github.com/zenorocha/clipboard.js 现代化的“复制到剪切板”插件.不包含 Flash.gzip 压缩后仅 3kb. 为什么使用它 复制文字到剪 ...
- 关于ajaxFileUpload只能上传一次的解决
今天用ajaxFileUpload做了一个上传文件到服务器的功能. 出现问题:先上传了一次,后来发现读取完成以后,再上传的时候前台调试file和自动义参数都传进,但后台获取的仍然是上一次上传时的相关参 ...