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

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

时间2025-06-15 00:45:26分类IT科技浏览4662
导读:字节缓冲流...

字节缓冲流

字节缓冲流介绍

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
phpcms教程(phpcms v9如何安装) 弹性云服务器是虚拟机吗怎么用(弹性云服务器租用可以干什么)