JavaSE内容整理九

输入输出

一、File类
(1)特点:
1.java.io.File类的对象可以表示文件和目录
2.当创建一个File对象后,就可以利用它来对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等等
3.File对象并不能直接对文件内容进行读/写操作,只能查看文件的属性
(2)常用方法:
File(String pathname) 指定文件(或目录)名和路径创建文件对象
boolean exists() 判断文件是否存在,存在返回true,否则返回false
boolean isFile() 判断是否为文件,是文件返回true,否则返回false
boolean isDirectory() 判断是否为目录,是目录返回true,否则返回false
String getName() 获得文件的名称
String getAbsolutePath() 获得文件的绝对路径
long length() 获得文件的长度(字节数)
boolean createNewFile()
throws IOException 创建新文件,创建成功返回true,否则返回false
boolean delete() 删除文件,删除成功返回true,否则返回false
File[] listFiles() 返回文件夹内的子文件与子文件夹的数组
String[] list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
boolean mkdir() 创建由此路径名命名的目录。
String[] list(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
(3)案例
在这里插入图片描述在这里插入图片描述

二、流分类
在这里插入图片描述
1、流按着数据的传输方向分为
输入流:往内存中读叫输入流。InputStream类或者Reader类的子类。(往内读 inputStream reader)
输出流:从内存中往外写叫输出流。OutputStream类或者Writer类的子类。(向外写outputStream writer)
2、传输格式的不同,又分为字节流和字符流
字节流:继承于InputStream类和OutputStream类。主要处理音频、图片、歌曲
常用类:FileInputStream FileOutputStream
字符流:继承于Reader(读取流)类和Writer(写入流)类。主要处理字符或字符串。
常用类:FileReader、FileWriter。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3、根据封装类型不同流又分为节点流和处理流
节点流:如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流。
常用类:字节输入流 FileInputStream
-字节输出流 FileOutputStream
-字符输入流 FileReader
-字符输出流 FileWriter

处理流:如果流封装的是其它流对象,称为处理流。处理流提供了缓冲功能,提高读写效率。
常用类:缓冲字节输出流 BufferedOutputStream
-缓冲字节输入流 BufferedInputStream
-缓冲字符输入流 BufferedReader
-缓冲字符输出流 BufferedWriter

在这里插入图片描述在这里插入图片描述

4、转换流
在这里插入图片描述
5、流步骤
(1)明确源和目的:
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer。
(2)操作的数据是否是纯文本:
  是:字符流。Reader Writer
不是:字节流。InputStream OutputStream
(3)是否有其它额外功能:
是否高效:是 (加缓冲区) 处理流
否 (不加缓冲区) 节点流
在这里插入图片描述

三、序列化与反序列化
1、定义:Java序列化就是把对象转换成字节序列保存到流中,而Java反序列化就是把字节序列从流中取出还原成Java对象。
2、应用:一是可以实现数据的持久化,在MVC模式中很是有用;二是可以对象数据的远程通信。
3、步骤:
(1)java.io.Serializable接口
(2)序列化:ObjectOutputStream
反序列化:ObjectInputStream
(3)Object readObject():从流ObjectInputStream中读取一个对象。
void writeObject(Object obj):将指定的对象写入ObjectOutputStream。
注意:Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性。

4、案例:
在这里插入图片描述
5、transient关键字
transient关键字标记的成员变量不参与序列化过程,输出的是默认值。
应用:如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作中被传输,可使用此关键字。

6、nio(非阻塞,同步)
(1)IO与NIO的区别
IO面向流每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。
(2)NIO的三个主要组成部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器)

Channel(通道):Channel是一个对象,可以通过它读取和写入数据。
Buffer(缓冲区):是一个对象,它包含一些要写入或者读到Stream对象的。应用程序不能直接对 Channel 进行读写操作,而必须通过 Buffer 来进行,即 Channel 是通过 Buffer 来读写数据的。
(3)案例:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值