黑马程序员技术交流社区

标题: IO应用 [打印本页]

作者: 1049355629    时间: 2019-8-1 15:58
标题: IO应用
经历了几天的io学习 我对io输入输出有了新的认识
1. File类

1.1 File类的概述

- File类是对抽象路径名的表示 ,所表示的文件/目录不一定存在
- 创建方法
  - File(String pathname)
  - File(String parent,String child)
  - File(File parent,String child)

1.2 创建文件或目录

- File类的创建功能
  - 创建文件:boolean createNewFile(); 用来创建一个文件,如果没有则创建,如果有则不创建
  - 创建目录:
    - mkdir();
    - mkdirs();
- 判断功能和获取功能
  - boolean exists()
  - boolean isDirectory()
  - boolean isFile()
  - String getAbsolutePath()
  - String getPath()
  - String[] list();   
  - File[] listFiles();
- 删除方法
  - boolean delete()
      public class Test{
      
              public static void main(String args[]){
                      File file = new File("d:/");
                      String[] str = file.list();
                      for(String s:str){
                              if(s.endWiths(".java")){
                                      System.out.println(s)
                              }
                             
                      }
              }
      }
  1.3流的分类
  - 按处理的类型划分
    - 字节流
    - 字符流
  - 按流向划分
    - 输入流
      - 字节输入流
      - 字符输入流
    - 输出流
      - 字节输出流
      - 字符输出流
  - final和finally
    - final 可以修饰类、变量、方法
      - final修饰类:不可被继承
      - final修饰变量:表示常量,不可被修改
      - final修饰方法:不可被重写
    - finally 在异常处理时使用,代码一定会被执行,通常用来释放资源
  1.4 需求
  - java copy hello.txt helloworld.txt



- 按流向分
  - 输入流
    - 字节输入流 InputStream   FileInputStream
      - 读数据方法:read()/read(byte[])/read(byte[],0,length)
      - 缓冲字节输入流 BufferedInputStream
    - 字符输入流 InputStreamReader(InputStream is)     Reader   FileReader
      - 缓冲字符输入流BufferedReader
        - String readLine()
  - 输出流
    - 字节输出流OutputStream FileOutputStream
      - 写数据 write(int b)/write(byte[] b)/ write(byte[] b, int offset, int length)
      - 缓冲字节输出流 BufferedOutputStream
    - 字符输出流 OutputStreamWriter(OutputStream os)  Writer FileWriter
      - 缓冲字符输出流 BufferedWriter
        - newLine()
- 按处理单位分
  - 字节流
  - 字符流
  -
- 集合回顾
  - Collection
    - List 有序可重复
      - ArrayList
      - LinkedList
    - Set 无序不重复
      - HashSet
      - TreeSet
    - Map
      - Hashmap
      - TreeMap
  File file = new File(pathname);
  File file = new File(parent,child);
  File file = new File(File parent, String child);

  boolean file.createNewFile();

  mkdir();

  mkdirs();

  file.delete();

  String[] files =  file.list();

  File[] files = file.listFiles();

  

  file.isDirectory();

  file.isFile();

  file.exists();

  

  

  InputStream

          FileInputStream

      BufferedInputStream

             read()

                read(byte[] b)

            read(byte[] b,0,length)

  OutputStream

       FileOutputStream

       BufferedOutputStream

              write()

              write(byte[] b)

              write(byte[] b,,0,length)

  

  字符集

          ASCII

            ASCII

      GBXXX

                GB2312

            GBK

            GB18030

      Unicode

             utf-8

             utf-16

             utf-32

  字符串编码解码

  String str = "hello";

  str.getBytes();//使用平台默认字符集进行编码

  str.getBytes(String charsetName);//使用指定的字符集进行编码

  

  new String(byte[] b);

  new String(byte[] b ,String charsetName)

  

  InputStreamReader(new FileInputStream(""))

  InputStreamReader(new FileInputStream(""), String charsetName)  //转换流

  

  OutputStreamWriter(new FileOutputStream(""))

  OutputStreamWriter(new FileOutputStream(""),String charsetName)


复制文件的异常处理

- throws
- try{} ....catch(){}....finally{}
- try{
  //放可能出现异常的代码
- }catch(Exception e){
  //异常的处理
- }finally{
  //释放资源
- }

jdk7

- try(//放可能出现异常的代码){
  //业务代码
- }catch(Exception e){
  //异常的处理
- }

jdk9

- //放可能出现异常的代码
- try(br;bw){
  //业务代码
- }catch(Exception e){
  //异常的处理
- }
  标准输入输出流的本质
  - System.out   PrintStream
  - System.in     InputStream
  字节、字符打印流
  - PrintStream
  - PrintWriter
  对象序列化
  - 对象如何实现序列化:implements Serializable
  - 实现序列化的对象才能够写到文件
    - ObjectInputStream    反序列化
    - ObjectOutputStream  序列化
  - 序列版本号:
  - 如果某些属性不想序列化:transient
  Properties和IO结合
  - A=B   split("=")[0]
  - <K,V>  - > K=V

username=zhangsan

password=123   ->ab2342b124j1l2j







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2