天道酬勤,学无止境

字节流

Java 中什么是 IO 流,字节流、字符流两者区别,缓冲流原理代码剖析

从接收输入值说起在日常的开发应用中,有时候需要直接接收外部设备如键盘等的输入值,而对于这种数据的接收方式,我们一般有三种方法:字节流读取,字符流读取,Scanner 工具类读取。字节流读取直接看一个例子:public class Demo01SystemIn { public static void main(String[] args) throws IOException { int a = System.in.read(); System.out.println(a); char c = 'a'; System.out.println((int) c); } }运行程序之后,会被 read 方法阻塞,这时候在控制台输入一个字符 a,那么上面的程序两句话都会输出 97,这个没问题,因为小写字母 a 对应的就是 97,那么假如我们输入一个中文会出现什么结果呢?把上面示例中的 a 修改为 中,然后运行程序,在控制台同样输入 中,则会得到 228 和 20013,这就说明我们控制台输入的 中 并没有全部读取,原因就是 read 只能读取 1 个字节,为了进一步验证结论,我们将上面的例子进行改写:public class Demo01SystemIn { public static void main(String[] args) throws IOException { char a

2021-05-19 04:02:31    分类:博客    java   字节流   IO 流

最详细的Java知识点--字节流、字符流

字节流、字符流主要内容IO流字节流字符流异常处理Properties目标能够说出IO流的分类和功能能够使用字节输出流写出数据到文件能够使用字节输入流读取数据到程序能够理解读取数据read(byte[])方法的原理能够使用字节流完成文件的复制能够使用FileWirter写数据到文件能够说出FileWriter中关闭和刷新方法的区别能够使用FileWriter写数据的5个方法能够使用FileWriter写数据实现换行和追加写能够使用FileReader读数据能够使用FileReader读数据一次一个字符数组能够使用Properties的load方法加载文件中配置信息第一章 IO概述1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。1.2 IO的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流

2021-05-13 16:05:37    分类:博客    字节流

java字节流详解(有例子)

1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。1.2 IO的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流。输出流 :把数据从内存 中写出到其他设备上的流。格局数据的类型分为:字节流和字符流。字节流 :以字节为单位,读写数据的流。字符流 :以字符为单位,读写数据的流。1.3 顶级父类们输入流输出流字节流字节输入流InputStream字节输出流OutputStream字符流字符输入流Reader字符输出流Writer第二章 字节流2.1 一切皆为字节一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。2.2

2021-05-13 10:19:24    分类:博客    字节流

字节流与字符流的区别

要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这个抽象描述方式起名为IO流,对应的抽象类为OutputStream和InputStream ,不同的实现类就代表不同的输入和输出设备,它们都是针对字节进行操作的。在应用中,经常要完全是字符的一段文本输出去或读进来,用字节流可以吗?计算机中的一切最终都是二进制的字节形式存在。对于“中国”这些字符,首先要得到其对应的字节,然后将字节写入到输出流。读取时,首先读到的是字节,可是我们要把它显示为字符,我们需要将字节转换成字符。由于这样的需求很广泛,人家专门提供了字符流的包装类。 底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接受字符串,它内部将串转成字节,再写入底层设备,这为我们向IO设别写入或读取字符串提供了一点点方便。 字符向字节转换时,要注意编码的问题,因为字符串转成字节数组, 其实是转成该字符的某种编码的字节形式,读取也是反之的道理。 讲解字节流与字符流关系的代码案例:import java.io.BufferedReader;import java.io.FileInputStream;import java.io

2021-04-19 10:14:07    分类:博客    字节流   字符流