首页IT科技java基础io全部流详解(java–IO流☛☛字节缓冲流✪)

java基础io全部流详解(java–IO流☛☛字节缓冲流✪)

时间2025-05-04 06:04:37分类IT科技浏览3949
导读:字节缓冲流...

字节缓冲流

字节缓冲流介绍

BufferedOutputStream(OutputStream out)该类实现缓冲输出流.通过设置这样的输出流, 应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用

BufferedInputStream(InputStream in)创建BufferedInputStream将创建一个内部缓冲区数组. 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节

构造方法

方法名 说明 BufferedOutputStream(OutputStream out) 创建字节缓冲输出流对象【write】 BufferedInputStream(InputStream in) 创建字节缓冲输入流对象【read】

字节缓冲流复制

package io_bytetheflow.IOliu; import java.io.*; public class bufferStreamCopyDemo { public static void main(String[] args) throws IOException { //复制视频 /* BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\java\\vd.avi")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\java1\\vd1.avi")); int by; while ((by=bis.read())!=-1) { bos.write(by); } System.out.println("复制成功!"); bos.close(); bis.close(); */ BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream("E:\\java1\\vd1.avi")); BufferedOutputStream bos1 = new BufferedOutputStream(new FileOutputStream("E:\\java\\vd11.avi")); byte[] bys = new byte[1024]; int len; while ((len=bis1.read(bys))!=-1) { bos1.write(bys,0,len); } System.out.println("复制成功!"); bos1.close(); bis1.close(); } }

字符流

为什么会出现字符流

字符流的介绍

由于字节流操作中文不是特别的方便            ,所以Java就提供字符流

字符流 = 字节流 + 编码表

中文的字节存储方式

用字节流复制文本文件时                  ,文本文件也会有中文      ,但是没有问题      ,原因是最终底层操作会自动进行字节拼接成中文

汉字在存储的时候                  ,无论选择哪种编码存储            ,第一个字节都是负数

编码表

什么是字符集

是一个系统支持的所有字符的集合      ,包括各国家文字            、标点符号                  、图形符号      、数字等

计算机要准确的存储和识别各种字符集符号                  ,就需要进行字符编码            ,一套字符集必然至少有一套字符编码            。常见字符集有ASCII字符集      、GBXXX字符集                  、Unicode字符集等

常见的字符集

ASCII字符集:

lASCII:是基于拉丁字母的一套电脑编码系统,用于显示现代英语                  ,主要包括控制字符(回车键            、退格      、换行键等)和可显示字符(英文大小写字符                  、阿拉伯数字和西文符号)

基本的ASCII字符集                  ,使用7位表示一个字符,共128字符                  。ASCII的扩展字符集使用8位表示一个字符            ,共256字符                  ,方便支持欧洲常用字符      。是一个系统支持的所有字符的集合      ,包括各国家文字            、标点符号、图形符号                  、数字等

GBXXX字符集:

GBK:最常用的中文码表      。是在GB2312标准基础上的扩展规范            ,使用了双字节编码方案                  ,共收录了21003个汉字      ,完全兼容GB2312标准      ,同时支持繁体汉字以及日韩汉字等

Unicode字符集:

UTF-8编码:可以用来表示Unicode标准中任意字符                  ,它是电子邮件                  、网页及其他存储或传送文字的应用 中            ,优先采用的编码                  。互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码            。它使用一至四个字节为每个字符编码

编码规则:

128个US-ASCII字符      ,只需一个字节编码

拉丁文等字符                  ,需要二个字节编码

大部分常用字(含中文)            ,使用三个字节编码

其他极少使用的Unicode辅助字符,使用四字节编码

字符串中的编码解码问题

相关方法

方法名 说明 byte[] getBytes() 使用平台的默认字符集将该 String编码为一系列字节 byte[] getBytes(String charsetName) 使用指定的字符集将该 String编码为一系列字节 String(byte[] bytes) 使用平台的默认字符集解码指定的字节数组来创建字符串 String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来创建字符串 public class StringDemo { public static void main(String[] args) throws UnsupportedEncodingException { //定义一个字符串 String s = "中国"; //byte[] bys = s.getBytes(); //[-28, -72, -83, -27, -101, -67] //byte[] bys = s.getBytes("UTF-8"); //[-28, -72, -83, -27, -101, -67] byte[] bys = s.getBytes("GBK"); //[-42, -48, -71, -6] System.out.println(Arrays.toString(bys)); //String ss = new String(bys); //String ss = new String(bys,"UTF-8"); String ss = new String(bys,"GBK"); System.out.println(ss); } }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
大话西游之大圣娶亲加长版百度网盘(大话CAS) python的工具(Python工具箱系列(十三))