java编程自学记录(day16)

File类:
 描述文件系统中的一个文件或者目录,可以通过File类查看磁盘上的一个文件或目录,可以获取文件的信息:大小,文件名等,但
是不能通过File获取文件内容,可以通过File类创建文件或目录,删除文件或目录
FileFilter:文件过滤器
 FileFilter是一个接口,可以规定过滤的条件,在获取某个目录时可以通过给定的删除条件来获取满足要求的子项

设计模式——回调模式
 定义一段逻辑(一个实现逻辑的对象),在调用其它方法时,将该逻辑通过参数传入,这个方法啊在执行过程中会调用我们传入的
逻辑来达成目的(我们不显式地主动调用)。这种现象就叫做回调模式
 最常见的应用场景:按钮监听器、过滤器的使用等

RandomAccessFile类
 作用:可以方便地读写文件内容
 打开文件的模式:rw:打开文件后可进行读写操作 r:读操作
 1)RandomAccessFile是基于指针进行读写操作的,指针在哪里就从哪里读写
 常用方法:
 a.写操作
  write(int b):向文件写字节,注意并不是将整个int写进去,而是写他的低八位,即其所代表的最低字节。
  write(byte[] data):向文件中写字节数组
  write(byte[] data, int off, int length):从data数组的offset位置开始写,连续写length个字节
 到文件中。
  writeInt(int b):一次写一个int,即四个字节。叫做序列持久化。
  writeLong()、writeDouble()......
  writeUTF(String str):写字符串,以UTF-8的编码方式
 b.读操作
  int read():读取一个字节,若已读到文件末尾,则返回-1
  int read(byte[] buf):尝试读取buf.length个字节。并将读取的字节存入buf数组。返回实际读取的字节数。
 若没有读取到数组也是返回-1
  int read(byte[] buf, int off, int length):从文件中读取length个字节,从buf数组的off位置开始
 写入。返回实际读取的字节数。
  int readInt():读一个Int
  readLong()、readDouble()......
  readUTF(String str):读字符串,以UTF-8的编码方式
 c.指针操作
   seek(long pos):将指针移动到某个位置
  long getFilePointer():获取当前指针的位置,都是从0开始的

java I/O流
 流:根据方向分为:输入流和输出流。方向的定位是基于我们字节写的程序的。
 输入流:流向程序的叫做输入流,用于获取数据的。没有write方法,只有read方法。
 输出流:从程序流向外面的叫做输出流。用于向外输出数据的。没有read方法,只有write方法。
 可以把流想象成管道,管道中流动的是水,而java中流动的是字节。

 InputStream:该接口存在输入流的特征
 OutputStream:该接口定义了输出流的特征

 流根据源头分为:基本流(节点流)和处理流(高级流,过滤流)
 基本流:有数据来源
 处理流:没有数据来源,不能独立存在。它是用于处理基本流的

 根据处理的数据单位不同,分为:字节流(以字节的读取为单位)和字符流(以字符的读取为单位)
 字节流:都是以stream结尾的
 字符流:都是以reader/writer结尾的

用于读写文件的字节流FIO/FOS
FileInputStream:文件输入流
 1)只有read方法,没有write方法
 2)常用的方法:
 int available():返回当前文件输入流中可以读取的字节数。
 没有一次性读取多个字节的方法,这一点是跟RandomFileAccessStream不一样的,因为它是低级流。
FileOutputStream:文件输出流
 1)只有write方法,没有read方法,write方法与以前的一样使用。但是没有类似writeInt这种方法
 2)几个构造方法。
  a.FileOutputStream(File file)
  会覆盖掉之前的文件
  b.FileOutputStream(File file, boolean append)
  append为true时,会在当前文件末尾进行写操作
  append为false时,与FileOutputStream(File file)效果一致
  c.FileOutputStream(String pathname, boolean append)

其他方面的知识:
 1)try{}中变量的作用域:在语句块内部定义的变量的作用域仅仅在语句块内部
 2)序列化:
  a.基本类型序列化:将基本类型数据转换为字节数组(序列)的过程
  b.对象序列化:
 3)持久化:将数据写入磁盘的过程
 4)所有的输入输出流在使用完成之后一定要关闭
 5)finally的典型应用,关流,由于在try或者catch中去执行关流操作都可能因为异常而执行不到关流操作,因此可以选择
 在finally语句块中执行关流操作,因为finally是不管有没有异常都要执行的。
 
 

猜你喜欢

转载自blog.csdn.net/zou8944/article/details/52431501