2024-6-12(沉默JavaIO,Java异常)

1.文件流(开发中操作十分频繁,eg:躺着一个Apache FileUtils类)

File 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。要想修改文件内容,需要借助输入输出流。

2.字节流:JavaIO的基石

一切文件(文本、视频、图片)的数据都是以二进制的形式存储的,传输时也是。所以,字节流可以传输任意类型的文件数据。

3.字符流Writer/Reader

字符流是一种用于读取和写入字符数据的输入输出流。与字节流不同,字符流以字符为单位读取和写入数据,而不是以字节为单位。常用来处理文本信息。

tips:从另一个角度说,字符流 = 字节流 + 编码表

IO异常:文件处理的话,用try-catch-resource吧,在resource中关闭流。

4.缓冲流

Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符流的缓冲。

缓冲流的工作原理是将数据先写入缓冲区中,当缓冲区满时再一次性写入文件或输出流,或者当缓冲区为空时一次性从文件或输入流中读取一定量的数据。这样可以减少系统的 I/O 操作次数,提高系统的 I/O 效率,从而提高程序的运行效率。

5.转换流

转换流可以将一个字节流包装成字符流,或者将一个字符流包装成字节流。这种转换通常用于处理文本数据,如读取文本文件或将数据从网络传输到应用程序。

6.序列流

Java 的序列流(ObjectInputStream 和 ObjectOutputStream)是一种可以将 Java 对象序列化和反序列化的流。

序列化是为了将Java对象在网络中传输,反序列化是为了得到Java对象在程序中使用。

Kryo序列化库:实际开发中,很少使用JDK自带的序列反序列方法,因为不方便。Kryo相对好点而已。

transient关键字(仅修饰字段,类和方法不能修饰):Java对象序列化的过程中,某些字段不希望被序列化,加上此字段即可。注:加上transient关键字的字段(类的成员变量),在反序列化的过程中,会被设置为默认值。

7.打印流

我只说一个:System.out.println();

打印流的特点,看看吧:

(1)可以自动进行数据类型转换:打印流可以将各种数据类型转换为字符串,并输出到指定的输出流中。

(2)可以自动进行换行操作:打印流可以在输出字符串的末尾自动添加换行符,方便输出多个字符串时的格式控制

(3)可以输出到控制台或者文件中:打印流可以将数据输出到控制台或者文件中,方便调试和日志记录(尽管生产环境下更推荐使用Logback、ELK 等)

8.Java异常处理

Error 的出现,意味着程序出现了严重的问题,而这些问题不应该再交给 Java 的异常处理机制来处理,程序应该直接崩溃掉,这种错误的出现,对于程序来说是致命的。

Exception 的出现,意味着程序出现了一些在可控范围内的问题,我们应当采取措施进行挽救。

checked 异常(检查型异常)在源代码里必须显式地捕获或者抛出,否则编译器会提示你进行相应的操作;而 unchecked 异常(非检查型异常)就是所谓的运行时异常,通常是可以通过编码进行规避的,并不需要显式地捕获或者抛出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值