java byte数组转化为流_java中字节数组和字符串、IO流和字节数组之间的转换
在实际开发中经常会碰到乱码问题:
首先查看系统支持的编码方式,默认的编码方式
//检查java支持的编码
System.out.println(Charset.availableCharsets().toString());//检查系统默认的编码方式
System.out.println(Charset.defaultCharset());//检查某种编码方式系统是否支持
System.out.println(Charset.isSupported("GBK"));
根据打印的结果,android默认支持的编码方式为UTF-8
字节数组——>字符串
public String bytes2String(byte[] bytes,String charsetName){try{//如果不指定charsetName,直接new String(bytes)默认使用utf-8
return (newString(bytes,charsetName));
}catch(UnsupportedEncodingException e) {
e.printStackTrace();return null;
}
}
字符串——>字节数组
public byte[] string2bytes(String str,String charsetName){//同样,如果不指定编码集的话就是用默认编码
try{returnstr.getBytes(charsetName);
}catch(UnsupportedEncodingException e) {
e.printStackTrace();return null;
}
}
在android中字节数组和字符串之间的转换还可以借助EncodingUtils这个类
(byte[] data,Stringcharset)
InputStream——>byte[]
public byte[] inputStream2Bytes(InputStream inStream) {
ByteArrayOutputStream swapStream= newByteArrayOutputStream();byte[] buff = new byte[100];int rc = 0;try{while ((rc = inStream.read(buff, 0, 100)) > 0) {
swapStream.write(buff,0, rc);
}returnswapStream.toByteArray();
}catch(IOException e) {
e.printStackTrace();return null;
}
}
byte[]——>inputstream
public InputStream byte2InputStream(byte[] bytes){return newByteArrayInputStream(bytes);
}
关于java的io流的一些说明:
输入流:只能够读取(将物理节点的值读取到内存的byte[]数组等)如fileInputstream.read(buffer);是将物理文件中的数据读取到buffer中
方向是物理节点——>buffer
输出流:将具体的数值写入(文件或其他)输出流 。如fileOutputStream.write(“我是测试数据”);方向是buffer/string——>物理节点
一、字节流和字符流
java的io分为两大类,字节流和字符流。可以认为能够用写字板打开的文本文件为字符。
字节流:以inputstream,outputstream为基类
字符流:以reader、writer为基类
一般,如果操作的是文本文件,可以直接使用字符流
二、节点流和包装流
节点流:如果(输入流)构造函数中传递的是具体的物理节点,那么是节点流。如
byteArrayInputStream(byte[] ),byteArrayOutputStream()
FileInputStream(File );FileOutputStream(File file,booolean append);后一个参数指定是覆盖还是添加
如果文件名不存在,但是上一级的目录存在,FileInputStream构造函数会自动创建新文件,否则,需要首先使用makeDirs将目录创建出来
以及与之对应的字符流
CharArrayReader,CharArrayWriter
FileReader,FileWriter
包装流:构造函数中的参数为节点流的流
(Readerin);该类有一个readline方法,可以方便地读取文本文件中的一行。(Writerout)
使用缓冲流可以提高输入输出的效率,
又如对象流:(InputStreaminput),(OutputStreamoutput) 分别拥有readObject和writeObject方法,可以用于对象的序列化
又比如转换流,也可以看作是包装流。
(InputStreamin,StringcharsetName);构造函数中可以指定编码。若不指定采用默认编码
这两个流将字节流转换为字符流,方便文本文件的处理,并且由于可以指定编码,在解决乱码中可以很方便的采用。
比如,读取一个文本文件中的内容,就可以这样包装
FileInputStream——>InputStreamReader——>BufferedReader
当然,也可以有其他方法
java byte数组转化为流_java中字节数组和字符串、IO流和字节数组之间的转换相关推荐
- Java中的File类和IO流
Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...
- java数值型转字符型_Java中数值型,字符型及字符串的相互转换
Java中数值型,字符型及字符串的相互转换由广州疯狂软件教育java培训分享: 刚开始学习Java不就前些时日被转换问题搞得有点凌乱在这里整理一下. 1.字符型与数值型之间的转换 (1)要将一个整数转 ...
- Java基础巩固(二)异常,多线程,线程池,IO流,Properties集合,IO工具类,字符流,对象流,Stream,Lambda表达式
一.异常,多线程 学习目标 : 异常的概述 异常的分类 异常的处理方式 自定义异常 多线程入门 1 异常的概述 1.1 什么是异常? 异常就是程序出现了不正常情况 , 程序在执行过程中 , 数据导致程 ...
- data后缀文件解码_Java语法进阶13-文件、IO流
File File是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流. File ...
- Java中long(Long)与int(Integer)之间的转换
文章目录 Java中long(Long)与int(Integer)之间的转换方式 一.将long型转化为int型,这里的long型是基础类型: 二.将Long型转换为int型,这里的Long型是包装类 ...
- 计算机模拟量与数字量的转换,在S7-1200 CPU中,如何实现模拟量数值与工程量数值之间的转换?...
在S7-1200 CPU中,如何实现模拟量数值与工程量数值之间的转换?本例程中的程序使用类似于STEP7 中提供的FC105/106.用户可以使用它们将模拟量输入/输出的整数数值与工程量单位之间进行转 ...
- 在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换
RGB转换为HSL的算法一般需要自己编写,但是在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换. 下面是利用FireMonkey的RGBtoHSL和HSLtoRG ...
- Unity 中的 3D 数学学习笔记——认识坐标系及坐标系之间的转换
一 :3d空间坐标系 x,y,z 轴 z轴方向确定有两种方式 左手坐标系和右手坐标系 左手坐标系:伸开左手,大拇指指向X轴正方向,食指指向Y轴正方向,其他三个手指指向Z轴正方向. 右手坐标系:伸开右 ...
- java 网络通讯用什么流_Java中打印流,网络通信协议,TCP通信的基础介绍
1-1.打印流 java.io.PrintStream:打印流 PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式. PrintStream特点: 1).只负责数据 ...
最新文章
- Javascript中的深拷贝和浅拷贝
- oracle视图能增删改,oracle视图的增删改
- 算法优化:rgb向yuv的转化最优算法,快得让你吃惊!
- C++如何使用puff()的示例
- Laravel分页设置与查询构造器查询数据集转为数组
- Kaggle入门 (Titanic TensorFlow Softmax)
- 从pg_hba.conf文件谈谈postgresql的连接认证
- Linux软链接的使用
- SpringBoot通过yml和xml文件配置日志输出
- JS记坑 ----- children返回的类数组
- 循环队列的实现笔记-c++
- waitpid使用实例
- 专利交底书怎么写 -
- 实用的网站、工具(科研学术、wps、作图、教程和文档、在线开发工具、在线编程学习、文档笔记工具、办公工具、写作、设计制作类、素材库)
- 中兴新支点操作系统——背景、徽标大起底
- 【优化算法】多目标灰狼优化算法(MOGWO)【含Matlab源码 099期】
- nlp中的实体关系抽取方法总结
- Soda Theme sublime 自定义编辑器主题
- 基于TCRT5000红外循迹模块DIY
- Apk反编译工具查看layout 和java源码的工具