JAVA入门笔记~基础知识day14

File类

1. 概述

  • 代表当前操作系统的文件对象

    • 是用来操作操作系统的文件对象的,删除文件,获取文件,创建文件(文件夹)...
  • 创建对象的API

    // 包: java.io.File
    // 构造器
    public File(String pathname)
    public File(String parent,String child)
    public File(File parent, String child)
    
  • 创建文件对象的格式

    File f = new File("绝对路径/相对路径");
    

  • 小结

    • File创建文件对象,路径可以是绝对路径,相对路径,文件路径,文件夹路径
      能用相对路径就用相对路径,相对路径只有项目中的文件才能用!!!

2. 获取功能的方法

// 返回此File的绝对路径名字符串
public String getAbsolutePath();

// 获取创建文件对象的时候用的路径
public String getPath();

// 返回由此File表示的文件或目录的名称
public String getName();

// 返回由此File表示的文件的长度
public long length();

// 返回文件的最后修改时间
public long lastModified()

3. 判断功能的方法

// 此File表示的文件或目录是否实际存在
public boolean exists();

// 此File表示的是否为目录
public boolean isDirectory();

// 此File表示的是否为文件
publicboolean isFile(); 

4. 创建和删除的方法

// 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件夹
public boolean createNewFile();

// 删除由此File表示的文件或目录(只能删除空目录)
public boolean delete();

// 创建由此File表示的目录.(只能创建一级目录)
public boolean madir();

// 创建由此File表示的目录,包括任何必须但不存在的父目录
public boolean madirs();

5. 目录的遍历

// 获取当前目录下所有的一级文件名称到一个字符串数组中去返回
public String[] list();

// 获取当前目录下所有的一级文件对象到一个文件对象数组中去返回(常用.重点)
public File[] listFiles();

// 这些API只能得到一级文件对象操作

递归

1. 概述

  1. 方法在方法中又调用了自己
    1. 直接递归: 自己的方法调用自己
    2. 间接递归: 自己的方法调用别的方法,别的方法又调用自己
  2. 递归如果控制的不恰当,会形成递归的死循环,从而导致栈内存溢出错误

2. 应用理论

  1. 核心三要素

    1. 递归的终结点
    2. 递归的公式
    3. 递归的方向必须走向终结点
  2. 有规律的递归可以直接创建公式套用方法,非规律的递归只能自己设计方法

3. 拓展: 文件的搜索

文件的搜索.png

字符集

  • 不同国家有不同的编码,中国默认是GBK编码,中文一般占2个字节.国际通用编码UTF-8,中文一般占3个字节,所以不同编码直接字节转换过程中可能会出现乱码现象

IO流

1. 概述

  • IO流: 输入(Input)/输出(Output)
  • File类只能操作文件对象本身,不能读写文件对象的内容
  • 读写数据内容,应该使用IO流
  • IO流是一个水流模型:IO理解成水管,数据理解成水流
  • IO流的分类
    • 按照流的方向分为: 输入流, 输出流
      • 输出流
        • 以内存为基准,把内存中的数据写出到磁盘文件或者网络介质中去的流称为输出流
        • 输出流的作用是写数据到文件,或者写数据发送给别人
      • 输入流
        • 以内存为基准,把磁盘文件中的数据或者网络中的数据读入到内存中去的流称为输入流
        • 输入流的作业是读取数据到内存
    • 按照流的内容分为: 字节流, 字符流
      • 字节流: 流中的数据的最小单位是一个一个的字节,这个流就是字节流
      • 字符流: 六中的数据的最小单位是一个一个的字符,这个流就是字符流
    • 流大体分为四大类
      • 字节输入流InputStream
        • 以内存为基准,把磁盘文件中的数据或者网络中的数据以一个一个的字节的形式读入到内存中去的流称为字节输入流
      • 字节输出流OutputStream
        • 以内存为基准,把内存中的数据以一个一个的字节写出到磁盘文件或者网络介质中去的流称为字节输出流。
      • 字符输入流Reader
        • 以内存为基准,把磁盘文件中的数据或者网络中的数据以一个一个的字符的形式读入到内存中去的流称为字符输入流
      • 字符输出流Writer
        • 以内存为基准,把内存中的数据以一个一个的字符写出到磁盘文件或者网络介质中去的流称为字符输出流。

2. 分类

  1. 字节输入流

    • 文件字节输入流FileInputStream

    • 作用是以内存为基准,把磁盘文件中的数据以一个一个的字节的形式读入到内存中的流

      // 构造器
      public FileInputStream(File file);
      
      public FileINputStream(String file);
      
      
      // 方法
      public int read(); // 每次读取一个字节,返回这个字节的数据,读取完毕返回-1
      
      int i = is.read();
      
      public int read(byte[] b); //每次读取一个字节数组的数据到字节数组中去,返回读取了多少个字节数,读取完毕返回-1
      
      
      // 方式一
      byte[] buffer = new byte[length];
      int len = 0 ;
      while((len = is.read(buffer)) !=-1){
      String rs = new String(buffer, 0 , len);
      System.out.print(rs);
      }
      
      
      // 方式二
      byte[] buffer = is.readAllBytes();
      String rs = new String(buffer);
      System.out.println(rs);
      
      // 该方式无法避免中文乱码
      
  1. 字节输出流

    • 文件字节输出流FileOutputStream

    • 作用是以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流

      // 构造器
      public FileOutputStream(File file);
      
      public FileOutputStream(String file);
      
      public FileOutputStream(File file,boolean append); // 追加数据的管道
      
      public FileOutputStream(String file,boolean append);   //追加数据的管道
      
      
      // 方法
      public void write(int b);  // 写一个字节出去
      
      public void write(byte[] buffer);  // 写一个字节数组出去
      
      public void write(byte[] b,int off, int len);  // 写一个字节数组的一部分出去
      
      /*
         输出流默认是覆盖之前全部内容!!!!
         如果要追加数据应该在构造器的第二个参数加上: true
      */
      
  1. 字符输入流

    • 文件字符输入流FileReader
    • 作用是以内存为基准,把磁盘文件的数据以字符的形式读取到内存中去的流,一般用于读取文本文件
    // 构造器
    public FileReader(File file);
    
    public FileReader(String file);
    
    // 方法
    public int read();   // 读取一个字符的编号返回,如果读取完毕返回的是-1
    
    public int read(char[] cbuf);    // 读取一个字符到一个字符数组中去,返回读取的字符个数,读取完毕了返回-1
    
    // 读取文本文件建议用字符流
    
  1. 字符输出流

    • 文件字符输出流FileWriter

    • 作用是以内存为基准,把内存中的数据以字符的形式写出到磁盘文件中去,一般用于写数据到文本文件

      // 构造器
      public FileWriter(File file);
      
      public FileWriter(String file);
      
      public FileWriter(String file,boolean append);
      
      public FileWriter(String file, boolean append);
      
      
      // 方法
      public void write(int c);  // 写一个字符出去
      
      public void write(String str); // 写一个字符串出去
      
      public void write(char[] cbuf);    // 写一个字符数组出去
      
      public void write(String str,int off, int len);    // 写一个字符串的一部分出去
      
  • IO流是读写传输数据的,IO流有很多种,每种流有自己的功能特点。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,365评论 0 4
  • 五、IO流 1、IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据。(2)java中对数据的操作都是通过...
    佘大将军阅读 503评论 0 0
  • 1、IO流 1.1、概述 之前学习的File类它只能操作文件或文件夹,并不能去操作文件中的数据。真正保存数据的是文...
    Villain丶Cc阅读 2,644评论 0 5
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序运行的过程中,可能需要对一些设备进...
    征程_Journey阅读 948评论 0 1
  • 一. Java基础部分.................................................
    wy_sure阅读 3,788评论 0 11