Java学习week_4(附IO流思维导图)

*IO流

定义

IO指的是Input/Output,IO流:输入输出流。 统称为数据流。

-流向划分: 1.输入流[Input] 2.输出流[Output]

-数据传输单位方式划分: 1.字节流(InputStream|OutputStream) 2.字符流(Reader|Writer)

按功能分:1.节点流:用于直接操作目标设备的流

2.处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更强大、灵活的读写功能。

File: 操作文件或目录各项属性和文件或者目录的创建删除

注意:IO流对象资源不会被垃圾回收器回收,所有一定记关闭IO,释放内存资源。

1.字节流: 图片,视频,音频等原始字节文件。

-FileInputStream

输入流如果文件不存在,则抛出FileNotFoundException。

-FileOutputStream

输出流如果文件不存在,则自动创建文件然后写入数据。

2.字符流

-FileReader(输入流)

-FileWiter(输出流)

*java.IO

-File: 代表文件或者目录对象

作用:操作文件或者目录属性以及创建和删除等操作。

-输入输出流(Input/Output)

流向划分:

输入流/输出流

读写方式划分:

字节流(InputStream|OutputStream)/字符流(Reader/Writer)

-文件字节流(byte)

FileInputStream

FileOutputStream

-文件字符流(char)

FileReader

FileWriter

-缓冲流

BufferedReader

从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取

构造函数:

BufferedReader(Reader in)

创建使用默认大小的输入缓冲区的缓冲字符输入流。

BufferedReader(Reader in, int sz)

创建使用指定大小的输入缓冲区的缓冲字符输入流。

BufferedWriter

将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入

构造函数:

BufferedWriter(Writer out)

创建使用默认大小的输出缓冲区的缓冲字符输出流。

BufferedWriter(Writer out, int sz)

创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。

BufferedInputStream

BufferedOutputStream

-内存流: 当输出流的目的,和输入流的源是内存时,这样的流称之为内存流

ByteArrayOutputStream

ByteArrayInputStream

CharArrayReader

CharArrayWriter

-转换流

字节流(1) -> 字符流(2)

InputStreamReader

OutputStreamWriter

-打印流(输出流)

PrintStream: 为另一个输出流添加了功能,即能够方便地打印各种数据值的表示.

PrintWriter:将对象的格式表示打印到文本输出。

-对象流: 对象流没有字符输入/输出流

注意:

1.序列化不会写出任何不实现java.io.Serializable接口的对象的字段(Serializable 默认的序列化)

2.实现Externalizable接口允许对象完全控制对象的序列化表单的内容和格式。

调用Externalizable接口writeExternal和readExternal的方法来保存和恢复对象的状态

3.static 或者 transient 修饰的字段是不能够被序列化

ObjectInputStream: 字节流 (对象信息持久化) -> 程序中 -> java对象信息 反序列化

ObjectOutputStream: 对象信息 -> 字节流 (对象信息持久化) 序列化

ObjectOutputStream将Java对象的原始数据类型和图形写入OutputStream。

可以使用ObjectInputStream读取(重构)对象。 可以通过使用流的文件来实现对象的持久存储。

IO流思维导图:

*java网络编程

客户端 -> 服务器

-TCP

-UDP

URL: 统一资源定位符号

Class URL表示统一资源定位符,指向万维网上的“资源”的指针。

资源可以像文件或目录一样简单,或者可以是对更复杂的对象的引用,例如对数据库或搜索引擎的查询。

组成: 【协议+主机地址+端口号+资源路径+查询参数+锚点】

方法:

String getFile()

获取此 URL的文件名。

String getHost()

获取此 URL的主机名(如适用)。

String getPath()

获取此 URL的路径部分。

int getPort()

获取此 URL的端口号。

String getProtocol()

获取此 URL的协议名称。

String getQuery()

获取此 URL的查询部分。

String getRef()

获取此的锚定(也称为“参考”) URL 。

InetAddress: Internet协议(IP)地址

方法:

byte[] getAddress()

返回此 InetAddress对象的原始IP地址。

static InetAddress[] getAllByName(String host)

给定主机的名称,根据系统上配置的名称服务返回其IP地址数组。

static InetAddress getByAddress(byte[] addr)

给出原始IP地址的 InetAddress对象。

static InetAddress getByAddress(String host, byte[] addr)

根据提供的主机名和IP地址创建InetAddress。

static InetAddress getByName(String host)

确定主机名称的IP地址。

String getCanonicalHostName()

获取此IP地址的完全限定域名。

String getHostAddress()

返回文本显示中的IP地址字符串。

String getHostName()

获取此IP地址的主机名。

static InetAddress getLocalHost()

返回本地主机的地址。

-TCP编程

TCP: 传输控制协议

特点: 面向连接,有序的,可靠的,以字节流的方式传输数据。

作用类:

服务器: ServerScoket

客户端: Socket

-UDP编程

UDP: 用户数据报协议

特点: 面向无连接,不可靠的,无序的,以数据包(DatagramPacket)的方式发生数据。

传输效率高。

DatagramSocket:通信类

DatagramPacket:数据报包类。

*进程和线程

每个独立执行的程序称为进程。

线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源,

多个线程共享内存,从而极大地提高了程序的运行效率。

进程与线程的关系

> 进程的产生,肯定会产生至少一个以上的线程;

>

> 进程关闭,该进程内的线程会全部销毁;

>

> 线程销毁,进程未必会关闭

多线程,指的是一个进程内的多个任务并发执行。

多线程的好处:可以更高效地利用CPU资源,同时,让固定流程的程序更加灵活;

注意:多个线程之间,谁先抢占到资源,谁就先执行。

*多线程实现

1.继承Thread类

2.实现Runnable接口

3.实现Callable接口

4.线程池

-Runnable和Callable的区别:

  (1)Callable规定的方法是call(),Runnable规定的方法是run().

  (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得

  (3)call方法可以抛出异常,run方法不可以,因为run方法本身没有抛出异常,

所以自定义的线程类在重写run的时候也无法抛出异常

  (4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。

它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。

通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

*多线程生命周期

*线程常用方法

static Thread currentThread() :返回对当前正在执行的线程对象的引用。

String getName() :返回此线程的名称。

void setName(String name) :将此线程的名称更改为等于参数 name 。

long getId() :返回此线程的标识符。

int getPriority() :返回此线程的优先级。

void join() :等待这个线程死亡。

static void sleep(long millis)

使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。

static void yield() 对调度程序的一个暗示,即当前线程愿意产生当前使用的处理器。 (线程礼让)

线程生命周期(图例):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值