Day22 转换流 File类

Day22

转换流 File类

键盘输入流

  • InputStream
  • in.read()这类方法代表阻塞式方法。
  • 系统的Stream流对象只有一个,一旦关闭就不能再在同一个程序中开启了,会随着系统的出现而出现,随系统的关闭而关闭。

转换流

  • 转换工具存在于字符流里。
  • InputStreamReader和OutputStreamWriter两个类都是字符流的子类对象,其作用是完成字节流和字符流的转换。也称为转换流。

InputStreamReader

读取字节流,解码后输出字符流。

OutputStreamReader

读取字符流,编码后转成字节流

两个定式写法

''BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
''BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));

流的操作规律

  1. 明确源和目的(汇)
    源:InputStream和Reader体系
    目的:OutputStream和Writer
  2. 明确数据是否是纯文本数据
    纯文本用字符流Writer和Reader
    否则用字节流InputStream和OutputStream
  3. 明确具体的设备
    源设备:
    - 硬盘 File
    - 键盘 System.in
    - 内存 数组
    - 网路 Socket流
    目的设备:
    - 硬盘 File
    - 控制台 System.out
    - 内存 数组
    - 网路 Socket流
  4. 是否需要其他额外功能
    • 是否需要高效(缓冲区) Buffered

按照指定编码进行转换

''OutputStreamWriter osw = new OutputStreamWriter osw(new FileOutputStreamWriter("filename", "UTF-8"));


File类

  • 将文件和文件夹封装成了对象,可以对文件与文件夹的属性信息进行操作。
  • File.separator是名称分隔符

构造函数

''File name = new File(String filename)
''File name = new File(“c:/”, String filename);
''File name = new File(f, String filename);

获取方法

  • 获取文件名称 getName()
  • 获取文件路径 getPath() getAbsolutePath()
  • 获取文件大小 long length()
  • 获取文件修改时间 long lastModified()
  • 获取父目录文件 getParent()

创建与删除

文件的创建和删除

  • boolean createNewFile() 如果存在的话就不会创建了
  • boolean delete() 删除相应的文件
  • boolean deleteOnExit() 在退出程序时自动删掉文件
    文件夹的创建和删除
  • boolean mkdir() 创建文件夹
  • boolean delete() 删除文件夹,只能删除空文件夹
  • boolean mkdirs() 可以创建多级目录

判断

  • boolean exists() 文件是否存在
  • isDirectory()
  • isFile()

重命名

  • renameTo() 可以用于完成剪贴功能

目录和容量获取

  • File[] listRoots()静态方法,不需要创建对象。列出根目录
  • getFreeSpace()
  • getTotalSpace()
  • getUsableSpace()
  • String[] list()列出当前目录下所有的文件及文件夹名称
  • File[] listFiles() 同上,但是拿到的对象是File对象。

过滤器

  • String[] list(FilenameFilter filter)重载过的list方法
  • 需要自己实现FilenameFilter接口,以此完成自定义的过滤功能。
  • File[] listFiles(FileFilter filter)同上

posted on 2017-04-07 15:21  hazelnut  阅读(85)  评论(0)    收藏  举报

导航