IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021-09-17 -> 正文阅读

[PHP知识库]2021-09-17

一、java.io.Reader和java.io.Writer

是所有字符流的超类,与字节流的超类平级,也是抽象类,里面规定了所有字符流必须具备的读写字符的方法。字符流最小的读写单位是char字符,但是底层实际读写的还是字节,只是字符与字节之间的转换工作由字符流来完成。

1、转换流:

java.io.InputStreamReader和OutputStreamWriter
他们是一对高级流,实际开发中我们在读写字符串而组建流连接时,他们是非常重要的一环,但是我们不会直接操作这两个流。


2、主要作用:

1、衔接其他高级字符流与字节流
2、将字符与字节按照指定字符集进行转换

二、BW和PW

java.io.BufferedWriter:内部有缓冲区,可以块写文本数据来加快写出数据的速度。
java.io.PrintWriter:带有自动行刷新功能的缓冲字符输出流,内部总是连接着BufferedWriter作为缓冲加速功能,更常用。

1、构造方法:

PrintWriter提供了直接对文件进行写操作的构造方法:
? ? ? ? PrintWriter(String filename)
? ? ? ? PrintWriter(File file)

内部会自动完成流的链接,对文件进行写文本操作。
? ? ? ? PrintWriter(String filename,String csn)
? ? ? ? PrintWriter(File file,String csc)

创建的同时还可以指定字符集,推荐使用这种方式创建。实际开发中我们写出文本数据时都应该确定字符集,而不是使用系统默认的。

2、PW底层源码:

this(new BufferedWriter( new OutputStreamWriter (new FileOutputStream(file) ) );

在创建时默认是覆盖模式,想要追加,就在FOS改为(file,true);

当创建PrintWriter时,第一个参数为流,第二个参数可以传入一个boolean类型的参数。如果参数的值为ture,当前PrintWriter具有自动行刷新的功能,即每次调用println()后都会自动flush()。

3、写出方法:println()

4、简易记事本

 /*
    简易记事本:
    程序启动后要求用户输入一个文件名,然后对该文件进行操作。之后用户在控制台输入的每一行字符都写入到该文件中。但用户单独输入exit时程序结束;
    要求:创建PrintWriter并且自行创建流完成链接。
     */
    public static void method3()throws Exception{
        FileOutputStream fos = new FileOutputStream("./src/TXT/haha.txt",true);
        PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(fos,"UTF-8")),true);
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入新增内容:");
        while (true) {
            String str = sc.next();
            if(str.equals("exit")){
                System.out.println("结束输入。");
                break;
            }
            pw.println(str);
        }
        pw.close();
    }

三、BR:

1、读入方法;?String readLine():

读取一行字符串并返回,返回的字符串中不包含这一行的换行符。若某一行中似乎一个空行(只有一个换行符),则返回一个空字符串。当返回值为null时,表示流读取到了末尾。

注:缓冲字符流第一次调用readLine()方法时并非只读取了第一行内容,二十一次性读取了若干字符并存入内部的缓冲区,然后仅将第一行内容进行返回而已,再次调用则返回第二行内容,以此类推。

?

?

四、对象流

java.io.ObjectOutputStream和ObjectInputStream
对象流是一对字节流,也是一对高级流,在流连接中的作用时进行对象的序列化(也叫串行化)与反序列化。方便我们进行对java对象的读写操作。

1、对象序列化:

也叫串行化,是将java对象按照其结构转换为字节序列的过程。

2、反序列化:

将字节序列还原为java对象的过程。

3、Serializable接口

Serializable接口中没有定义任何的字段和方法,这个接口称为签名接口,是编译器敏感的一个接口,只有实现该接口才可以进行序列化和反序列化,否则运行会出现异常。
序列化时:java.io.NotSerializableException 不可序列化异常
反序列化时:java.io.InvalidClassException 无效的类异常

关于版本号:serialVersionUID 序列化版本号

如果我们自己没有声明,接口会默认生成一个。
工作机制:在序列化的时候系统将serialVersionUID写入到序列化的文件中去,当反序列化的时候系统会先去检测文件的serivalVersionUID跟当前文件是否一致,如果一致则反序列化成功,否则说明当前类跟序列化后的类发生了变化,比如是成员变量的数量或者类型发生了变化,会抛出异常,反序列化失败。

序列化保存对象:

序列化用于保存的对象,所以只能保存对象的非静态成员变量,不能保存任何的成员方法和静态成员变量。而且序列化保存的只是变量的值,对于变量的任何修饰符都不能保存。

如果把类中的属性定义为static的话,在进行反序列化时就不能得到原本的值,就只能得到null。

transient关键字:

当一个类实现了序列化接口后,可以通过这个关键字修饰某个属性,那么当这个类的实例进行序列化时会忽略这个属性的值,达到对象瘦身的目的。

4、javaBean规范:

1、javaBean类必须是一个公共类,即访问属性应设置为public
2、必须有一个公共的无参构造
3、javaBean类不应该有公共属性,所有属性都应该是private修饰的
4、为私有属性提供符合命名规范的get和set方法
5、实现Serializable接口

5、类的实例写出方法:

[void]writeObject(Object o)
? ? ? ? 对象输出流提供了一个写出对象的方法,但是在写出对象时要求该对象所属的类必须实现Serializable接口,否则会抛出异常。

6、什么是对象的序列化?

当我们调用writeObject()方法将一个对象写出时,首先该对象经过对象流,它会将对象按照其结构转换为一组字节,这个过程称为对象的序列化。

7、什么是持久化?

序列化后的字节再经过对象流连接的文件流写出,而文件流会将这个字节最终写入到文件中(磁盘中)做长久保存这个过程称为数据持久化。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 09:51:10  更:2021-09-18 09:53:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:21:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码