IO流

文件

文件---->java程序内存 :输入流

java程序内存---->文件 :输出流

创建文件3种方法:

  1. new File(String pathname)

  2. new File(File parent, String child) //根据父目录文件+子路径构建

  • 常用文件方法:getName()获取文件名 getParent()获取文件路径 length()文件大小 exists() 文件是否存在 isFile()是不是一个文件 isDirectory()是不是一个目录 renameTo重命名,不会保留原文件 createNewFile创建新文件

  • 常用文件操作:mkdir创建一级目录 mkdirs创建多级目录 delete删除空目录或文件

文件过滤器

FilenameFilter接口:

boolean accept(File dir,String name) dir:当前目录,name:文件名。

FileFilter接口:

boolean accept(File pathname) pathname:文件。

IO流

抽象类

字节流(8bit)

一般都是以Stream结尾,二进制文件

InputStream(抽象类)

字节输入流

  • FileInputStream节点流(底层流)

  • BufferedInputStream缓冲流

  • ObjectInputStream对象流-反序列化:对象的输入,从硬盘到程序内存

OutputStream(抽象类)

字节输出流

  • FileOutputStream节点流(底层流)

  • BufferedOutputStream缓冲流

  • ObjectOutputStream对象流-序列化:对象的输出,从程序内存到硬盘

字符流

一般以Reader/Writer结尾

Reader(抽象类)

字符输入流

  • InputStreamReader转换流

    • FileReader节点流(底层流)
  • BufferedReader缓冲流

Writer(抽象类)

字符输出流

  • OutputStreamWriter转换流

  • BufferedWriter缓冲流

    • FileWriter节点流(底层流)
  • PrintWriter打印流

流的选择

  • 字符流只适用于纯文本文件操作

  • 字节流可以操作任何文件

  • 数据存储在文本文件,选择文件流File开头

  • 数据存储在二进制文件(图片、音视频等)选文件字节流

  • 数据存储在对象,选择对象流Object开头

  • 节点流(文件流):可以直接从数据源/目的地读写数据

  • 处理流(包装流):不能直接连接到数据源或目的地,“处理流的流”

  • 缓冲流:处理流的一种,通过创建一个指定字节数组作为缓冲区(长度一般为1024),来提高IO流的读写效率。

  • 转换流:处理流的一种,

  • 对象流:序列化和反序列化,用来组织和存储数据,对象本身也是数据。

    • 序列化:Java对象转换为字节序列的过程

    • 反序列化:字节序列恢复为Java对象的过程

缓存(cache)与缓冲(buffer)的主要区别

Buffer的核心作用是用来缓冲,缓和冲击(对输出设备的冲击,包括磁盘、打印机、显示器)。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。

Cache的核心作用是加快取用的速度(加快读取速度,包括CPU读内存、内存读磁盘、用户通过浏览器请求资源)。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

简单来说就是buffer偏重于写,而cache偏重于读。

Properties类

配置文件,父类是HashTable

不需要加空格、双引号、分号;

常见方法:load,list,getProperty(key),

该类主要用于读取Java的配置文件

toString---getset---constructor

posted @ 2023-01-17 21:28  Ritchie^._.^  阅读(21)  评论(0)    收藏  举报