手机网站制作教程视频,seo外推上排名,专业做家具的网站,wordpress成品网站免费1.IO
a.介绍
i.IO是指Input和Output#xff0c;即输入和输出#xff0c;以内存为中心#xff1a; 1.Input是指从外部读入数据到内存。 2.Output是指把数据从内存输出到外部。 ii.IO流是一种顺序读写数据的模式#xff0c;它的特点是单向流动。数据类似自…1.IO
a.介绍
i.IO是指Input和Output即输入和输出以内存为中心 1.Input是指从外部读入数据到内存。 2.Output是指把数据从内存输出到外部。 ii.IO流是一种顺序读写数据的模式它的特点是单向流动。数据类似自来水一样在水管中流动所以我们把它称为IO流。
b.InputStream/OutputStream
i.IO流以byte字节为最小单位因此也称为字节流。 ii.InputStream代表输入字节流OutputStream代表输出字节流这是最基本的两种IO流。
c.Reader/Writer
i.以char字符为最小数据单位来读写这种称为字符流。 ii.Reader和Writer本质上是一个能自动编解码的InputStream和OutputStream。
d.同步和异步
i.同步IO是指读写IO时代码必须等待数据返回后才继续执行后续代码。优点代码编写简单缺点CPU执行效率低。 ii.异步IO是指读写IO时仅发出请求然后立刻执行后续代码。优点CPU执行效率高缺点代码编写复杂。
2.File
a.File对象
i.文件是非常重要的存储方式。Java标准库java.io提供了File对象来操作文件和目录。 ii.构建File对象时需要传入文件路径可以是绝对路径也可以是相对路径。 iii.Windows平台使用 \ 作为路径分隔符在Java中需要用 \\ 表示一个 \ 。Linux平台用 / 作为分隔符路径。 iv.可以用 . 表示当前目录用 .. 表示上级目录。 v.File对象有3种形式表示的路径getPath()返回构造方法传入的路径getAbsoluteFile()返回绝对路径getCanonicalFile()返回规范路径。 b.文件和目录
i.File对象既可以表示文件也可以表示目录。构建File对象时并不会对磁盘做任何操作调用File对象的某些方法时才真正进行磁盘操作。
c.创建和删除文件
i.当File对象表示一个文件时可以通过createNewFile()方法创建一个新文件用delete()删除该文件。 d.Path
i.Java标准库还提供了一个Path对象位于java.nio.file包。 ii.如果需要对目录进行复杂的拼接、遍历等使用Path对象更方便。 3.InputStream
a.简介
i.Java库提供的最基本的输入流。 ii.不是接口是抽象类是所有输入流的超类。 iii.int read()方法会读取输入流的下一个字节并返回字节的int值如果读到末尾返回-1表示不能继续了。 iv.在计算机中类似文件、网络端口这些资源都是由操作系统统一管理的。应用程序在运行过程中打开文件需要及时关闭以便让操作系统及时释放资源。 v.InputStream和OutputStream都是通过close()方法关闭流关闭流就会释放对应的底层资源。 vi.try(resource)的语法编译器会自动关闭资源。实际上编译器并不会特地为InputStream加上自动关闭 编译器只看try(recource...)中的对象是否实现了java.lang.AutoCloseable接口实现了就自动加上finally语句并调用close()方法。 b.缓冲
i.在读取流时一次读取一个字节效率低很多流支持一次性读取多个字节到缓冲区利用缓冲区一次性读取多个字节效率就高很多。 ii.两个方法 1.int read(byte[] b)读取若干字节并填充到byte[]数组返回读取的字节数。 2.int read(byte[] b, int off, int len)指定byte[]数组的偏移量和最大填充数。 iii.一次读取多个字节需要先定义一个byte[]数组作为缓冲区read()方法会尽可能多的读取字节到缓冲区但不会超过缓冲区的大小。 c.阻塞 i.调用InputStream的read()方法读取数据时read()方法是阻塞的即必须等read()方法返回后才能继续。读取IO流比执行普通代码速度慢很多。
d.InputStream实现类
i.ByteArrayInputStream把一个byte[]数组在内存中变成一个InputStream。 4.OutputStream
a.简介
i.Java标准库提供的最基本的输出流。 ii.不是接口是抽象类所有输出流的超类。 iii.void write(int b)方法虽然是int参数但是只会写入一个字节到输出流。 iv.提供了flush()方法它的目的是将缓冲区的内容真正输出到目的地。 1.出于效率考虑操作系统并不是一个个字节输出而是把输出的字节放到内存缓冲区本质上是一个byte[]数组等待缓冲区写满一次性写入文件或网络。一次写1个字节和一次写1000个字节时间几乎一样flush()方法能够强制把缓冲区内容输出。 2.通常情况下不需要我们调用缓冲区写满后、close()方法关闭前OutputStream会自动调用flush()方法。 3.某些情况下需要我们手动调用flush()方法来强制输出缓冲区。
b.FileOutputStream
i.文件输出流从内存输出内容到外部。 ii.一次性写入若干字节调用write(byte[])来实现。 iii.try(resource)来保证OutputStream在无论是否发生IO错误的时候都能正确关闭资源。 c.阻塞
i.调用OutputStream的write()方法时write()方法是阻塞的即必须等write()方法返回后才能继续。输出IO流比执行普通代码速度慢很多。
d.OutputStream实现类
i.ByteArrayOutputStream把一个byte[]数组在内存中变成一个OutputStream。 ii.同时操作多个AutoCloseable资源时在try(resource){...}语句中可以同时写出多个资源用;隔开。