字节流

IO流—字符流

廉价感情. 提交于 2020-02-17 15:31:42
1.字符流 我们操作的文件中有中文字符,需要对中文字符做出处理,这时用到了字符流 字符编码表 计算机底层数据存储的都是二进制数据,而我们生活中的各种各样的数据 , 老美他们就把每一个字符和一个整数对应起来,就形成了一张编码表,老美他们的编码表就是 ASCII 表。 编码表:其实就是生活中字符和计算机二进制的对应关系表。 1 、 ascii : 一个字节中的 7 位就可以表示。对应的字节都是正数。 0-xxxxxxx 2 、 iso-8859-1: 拉丁码表 latin ,用了一个字节用的 8 位。 1-xxxxxxx 负数。 3 、 GB2312: 简体中文码表。包含 6000-7000 中文和符号。用两个字节表示。两个字节 第一个字节是负数 , 第二个字节可能是正数 GBK: 目前最常用的中文码表, 2 万的中文和符号。用两个字节表示,其中的一部分文字,第一个字节开头是 1 ,第二字节开头是 0 GB18030 :最新的中文码表,目前还没有正式使用。 1、unicode :国际标准码表 : 无论是什么文字,都用两个字节存储。 Java中的char类型用的就是这个码表。char c = 'a';占两个字节。 Java中的字符串是按照系统默认码表来解析的。简体中文版 字符串默认的码表是GBK。 5 、 UTF-8: 基于 unicode ,一个字节就可以存储数据,不要用两个字节存储

Java 基础 IO流

拜拜、爱过 提交于 2020-02-17 14:31:48
一,前言   在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据。现在我们就要开始给文件中写数据,或者读取文件中的数据。 二,字节流   2.1 字节输出流     OutputStream此抽象类,是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性功能方法。     输出流中定义都是写write方法,如下图:         FileOutputStream类       OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件。     FileOutputStream类,即文件输出流,是用于将数据写入 File 的输出流。      FileOutputStream类写入数据到文件中     将数据写到文件中,代码演示: public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { //需求:将数据写入到文件中。 //创建存储数据的文件。 File file = new File("c:\\file.txt"); //创建一个用于操作文件的字节输出流对象。一创建就必须明确数据存储目的地。 //输出流目的是文件,会自动创建。如果文件存在,则覆盖。

字节流、字符流

北战南征 提交于 2020-02-17 06:59:52
一、IO概述 1.1 什么是IO 把数据的传输,看做是一种数据的流动,按照流动的方向, 以内存为基准 ,分为 输入input 和 输出 output ,即流向内存是输入流,流出内存的输出流。 Java中I/O操作主要是指使用 java.io 包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。 1.2 IO的分类 根据数据的流向分为:输入流和输出流。 输入流 :把数据从 其他设备 上读取到 内存 中的流。 输出流 :把数据从 内存 中写出到 其他设备 上的流。 根据数据的类型分为:字节流和字符流。 字节流 :以字节为单位,读写数据的流。 字符流 :以字符为单位,读写数据的流。 1.3 顶级父类 输入流 输出流 字节流 字节输入流 InputStream 字节输出流 OutputStream 字符流 字符输出流 Reader 字符输出流 Writer 二、字节流 2.1 一切皆为字节 一切文件 数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以, 字节流可以传输任意文件数据 。在操作流的时候,我们要时刻明确, 无论使用什么样的流对象,底层传输的始终为二进制数据 。 2.2 字节输出流【OutputStream】 java.io.OutputStream 抽象类 是表示字节输出流的所有类的超类

javaSE学习笔记(15) ---缓冲流、转换流、序列化流

冷暖自知 提交于 2020-02-15 23:46:31
javaSE学习笔记(15) ---缓冲流、转换流、序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,相当于是对基本流对象的一种增强。 概述 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流 : BufferedInputStream , BufferedOutputStream 字符缓冲流 : BufferedReader , BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。 字节缓冲流 构造方法 public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。 public BufferedOutputStream(OutputStream out) : 创建一个新的缓冲输出流。 构造举例,代码如下: // 创建字节缓冲输入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bis.txt"

Java基础复习_day16_IO流--字节流

耗尽温柔 提交于 2020-02-12 20:55:30
字节流 一. 字节输入流(InputStream) InputStream 这个抽象类是表示字节输入流的所有类的超类 1. FileInputStream(字节输入流) ① 概述 从文件系统中的某个文件中获得输入字节。 用于读取诸如图像数据之类的原始字节流。 ② 构造方法 FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。 ③ 常用方法 int read() 从此输入流中读取一个数据字节 int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中 2. BufferedInputStream(字节缓冲输入流) ① 概述 创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节 ② 构造方法 BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数

13:IO流

烈酒焚心 提交于 2020-02-08 13:08:25
IO简介 继承结构 整体架 构 常用内容 分类 根据处理的数据单位不同,分为 字节流 和 字符流 ;in/out 相对于程序而言 的输入(读取)和输出(写出)的过程,即根据数据的流向不同称为 输入流 和 输出流 字符流的由来 因为数据编码不同,而产生了对字符进行高效操作的流对象(本质其实就是基于字节流动读取时,去查了指定的码表) 字符流与字节流的区别 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次能读多个字节 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据 故→处理文本文件优先考虑使用字符流,除此以外均使用字节流 字节流输出与输入对应关系 字符流输出与输入对应关系 java.io包: File 字节流:针对二进制文件 InputStream --FileInputStream --BufferedInputStream --ObjectInputStream OutputStream --FileOutputStream --BufferedOutputStream --ObjectOutputStream 字符流:针对文本文件。读写容易发生乱码现象,在读写时最好指定编码集为utf-8 Writer --BufferedWriter --OutputStreamWriter Reader -

关于转换流的一点理解

醉酒当歌 提交于 2020-02-08 09:34:05
先看如下代码: public class ConvertTest { public static void main ( String [ ] args ) { byte [ ] a = new byte [ 8 ] ; try { System . in . read ( a ) ; System . out . write ( a ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } } } \quad 我工程默认的字符集为UTF-8,所以每个ASCII字符占1字节,这里我们看到,我们通过write把字节数组输出到控制台的时候,并不是直接以字节的形式出现的,这意味着不仅仅在read的时候字节输入流把读取的字符decode成了字节然后 读入字节数组 ,同样在write的时候字节输出流把 写出字节数组 的字节encode成了字符。 \quad 转换流是连通字节流和字符流的桥梁,InputstreamReader是字节流通向字符流的桥梁,它使得原本只能 写入字节 到缓冲内存的InputStream类型的System.in可以 写入字符 ,OutputStreamWriter是字符流通向字节流的桥梁,它使得原本只能从缓冲内存 读出字节 的PrintStream类型的System.out可以 读出字符 。 \quad 但是

IO流

十年热恋 提交于 2020-02-07 07:18:44
IO流 概述:把数据的传输这种流动按照流动的方向以内存为基准分别为inout和output数据流向内存输入流 流出内存的是输出流 java中IO操作再IO包下进行输入和输出得操作 输入---》读取数据 输出也叫写出数据 存东西叫输出 读东西叫输入 IO分类 根据数据得流向分输入流和输出流 输入流:把数据从其他设备 读取到内存中 输出流:把数据从内存中写出其他设备 根据数据类型分为: 字节流 字符流 字节流: InoutSteam outputSteam 字符流:reader     writer 字节流:一切皆为字节 图片视频都是以二进制得方式存储 一个一个字节 字节流可以读任何文件 字节输出流:   OutputStream------》File OutputStream         close(); 关流         flush();刷新         write(byte [ ] btye);   File OutputStream(File File);   File OutputStream(String String); File InputSteam   java.io.InputStream 是所有字节流输入流的超类   read();读取下一个字节   read(byte [ ] byte);   close(); File InputStream

12:I/O流

柔情痞子 提交于 2020-02-07 04:39:51
1.流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。流提供了一条通道程序,可以使用次通道吧源中的字节序列送到目的地。 2.输入流:程序从执行源的输入流中读取源中的数据,源可以是文件,网络,压缩包或其他数据源。 read()方法:从输入流中读取数据的下一个字节。返回0-255范围内的int字节值,如果到达流末尾而没有可用的字节,则返回值位-1。 read(byte[] b):从输入流中读入一定长度的字节,并以证书的形式返回字节数。 mark(int realimit)方法:在输入流的当前位置放置一个标记,readlimit 参数告知此输入流在标记位置失效之前允许读取的字节数。 reset()方法:将输入指针返回到当前所做的标记处 skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。 markSupported()方法:如果当前流支持mark()/reset()操作就返回true。 colse方法:关闭此输入流并释放与该流关联的所有系统资源。 3.输出流:输出流的执行是数据要达到的目的地,程序通过向输出流中写入数据吧信息传递到目的地。输出流的目标可以是文件,网络,压缩包或其他数据源。 write(int b)方法:将指定的字节写入此输出流。 write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。 write(byte[

Java 转换流的简单理解

一世执手 提交于 2020-02-07 01:49:22
字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。 编码:字符 --> 字节 解码:字节 --> 字符 字符编码,是一套自然语言的字符与二进制数之间的对应规则。 字符集 字符集,也叫编码表,是一个系统支持的所有字符集合,包括国家文字、标点符号、图形符号、数字等。 计算机要准确的存储和识別各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。 编码引出的问题 在IDEA中,使用FileReader读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题。但是,当读取系统中创建的文本文件时,由于系统的默认是GBK编码,就会出现乱码。 那么该如何解决呢?我们可以使用InputStreamReader类、OutputStreamWriter类,指定编码来进行读写操作,这时候就不会出现乱码的情况了。 OutputStreamWriter类 java