IO流

File

File是java.io包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。

IO流

用于读写数据的(可以读写文件,或网络中的数据...)

创建File类的对象

构造器说明
public File​(String pathname)根据文件路径创建文件对象
public File​(String parent, String child)根据父路径和子路径名字创建文件对象
public File​(File  parent, String child)根据父路径对应文件对象和子路径名字创建文件对象

注意:File对象既可以代表文件,也可以代表文件夹。

File封装的对象仅仅是一个路径名,这个路径名是可以存在的,也允许是不存在的。

绝对路径、相对路径

绝对路径:从盘符开始

File file1 = new File(“D:\\itheima\\a.txt”);

相对路径:不带盼复,默认直接到当前工程下的目录寻找文件。

File file3 = new File(“模块名\\a.txt”);

创建文件、删除文件

File类创建文件的功能
方法名称说明
public boolean createNewFile()创建一个新的空的文件
public boolean mkdir()只能创建一级文件夹
public boolean mkdirs()可以创建多级文件夹
File类删除文件的功能
方法名称说明
public boolean delete​()删除文件、空文件夹

注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站。

import java.io.File;
import java.io.IOException;

public class Test2 {
    public static void main(String[] args) throws Exception {
        File f1 = new File("E:\\王森\\Java资料\\Java资料\\第二阶段:基础加强13天课程(资料)\\全部PPT\\aaaday01、面向对象进阶(一).pptx");
        System.out.println(f1.createNewFile());
        File f2 = new File("E:\\王森\\Java资料\\Java资料\\第二阶段:基础加强13天课程(资料)\\全部PPT2");
        System.out.println(f2.mkdir());
        File f3 = new File("E:\\王森\\Java资料\\Java资料\\第二阶段:基础加强13天课程(资料)\\全部PPT3\\aaa\\bbb\\ccc\\ddd\\eee\\fff");
        System.out.println(f3.mkdirs());
        System.out.println(f1.delete());
        System.out.println(f2.delete());
        System.out.println(f3.delete());
    }
}

遍历文件夹

File类提供的遍历文件夹的功能
方法名称说明
public String[] list()获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
public File[] listFiles()获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
使用listFile方法时的注意事项:

当主调是文件,或者路径不存在时,返回null

当主调是空文件夹时,返回一个长度为0的数组

当主调是一个有内容的文件夹时,将里面所有一级文件和文件路径放在File数组中返回

当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件

当主调是一个文件夹,但是没有权限访问该文件夹时,返回null

前置知识:方法递归

认识递归的形式

什么是方法递归

递归是一种算法,在程序设计中广泛使用。

从形式上说:方法调用自身的形式称为方法递归(recursion)。

递归的形式

直接递归:方法自己调用自己。

间接递归:方法调用其他方法,其他方法又调回自己。

使用方法递归时需要注意的问题:
递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出错误。

应用、执行流程、算法思想

案例:计算n的阶乘
public class Test4 {
    public static void main(String[] args) {
        System.out.println(test4(5));
    }
    public static int test4(int n){
        if (n == 1){
            return 1;
        }else {
            return test4(n-1)*n;
        }
    }
}
递归算法三要素:

递归公式:f(n) = f(n-1)*n;

递归的终结点:f(1)

递归的方向必须走向终结点

案例:猴子吃桃问题

猴子第一天摘下若干桃子,当即吃了一半,觉得好不过瘾,于是又多吃了一个 第二天又吃了前天剩余桃子数量的一半,觉得好不过瘾,于是又多吃了一个 以后每天都是吃前天剩余桃子数量的一半,觉得好不过瘾,又多吃了一个 等到第10天的时候发现桃子只有1个了。 需求:请问猴子第一天摘了多少个桃子?

public class Test5 {
    public static void main(String[] args) {
        System.out.println(f(1));
    }
    public static int f(int n){
        if (n == 10){
            return 1;
        }else {
            return 2*f(n + 1) + 2;
        }
    }
}

前置知识:字符集

标准ASCII字符集

ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括了英文、符号等。

标准ASCII使用一个字节存储一个字符,首尾是0,总共可表示128个字符,对美国佬来说完全够用。

GBK(汉字内码扩展规范,国标)

汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储

UTF-8

是Unicode字符集的一种编码方案,采取可变长编码方案,共分为四个长度区:一个字节,两个字节,三个字节,四个字节

英文字符、数字等只占一个字节(兼容标准ASCII编码),汉字字符占用三个字节

注意:技术人员在开发时都应该使用UTF-8编码!

字符集的编码、解码操作

IO流

IO流概述:

I指Input,称为输入流:负责把数据读到内存中

O指Output,称为输出流:负责写数据出去

IO流的分类

按流的方向分:输入流和输出流

按流中数据的最小单位分:字节流(适合操作所有类型的文件)字符流(只适合操作纯文本文件)

总结流的四大分类

字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流

字节输出流:以内存为基准,把内存中以字节写出到磁盘文件或者网络中去的流

字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流

字符输出流:以内存为基准,把内存中的数据写出到磁盘文件或者网络介质中去的流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值