活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
File类
File类的对象代表操作系统的文件(文件、文件夹),File类在java.io.File包下
File类提供了诸如:创建文件对象代表文件,获取文件信息(大小,修改时间)、删除文件、创建文件(文件夹)等功能。
IO流:用来读取文件数据的。
File类创建对象:
File对象可以定位文件和文件夹。
File封装的对象仅仅是一个文件名,这个路径可以是存在的,也可以是不存在的。
File类构建对象的方式:
File file = new File(“文件/文件夹/绝对路径/相对路径”);
delete方法默认只能删除文件和空文件夹,默认不能删除非空文件夹,delete方法直接删除不走回收站。
listFiles方法注意事项:
1.当文件不存在时或代表文件时,返回null。
2.当文件对象代表一个空文件夹时,返回一个长度为0的数组。
3.当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回。
4.当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放回File数组中返回,包括隐藏文件。
5.当没有权限访问该文件夹时,返回null。
6.只能遍历当前文件夹对象下的一级文件对象。
方法递归
方法调用自身的形式称为方法递归。
递归的形式
直接递归:方法自己调用自己
间接递归:方法调用其他方法,其他方法又回调方法自己。
方法递归存在的问题:
递归如果没有控制好终止,会出现递归死循环,方法无限调用自己,无法终止,最终导致栈内存溢出现象。
public class test{
public static void main(String[] args){
int result = f(10);
System.out.println("10的阶乘是:" + result);//3628800
}
public static int f(int n){
if (n == 1){
return 1;
}else{
return n * f(n-1);
}
}
}
递归算法三要素大体可以总结为:
递归的公式:f(n) = f(n-1) * n;
递归的终结点:f(1)
递归的方向必须走向终结点。
ASCLL字符集
ASCLL:美国信息交换标准代码,包括数字、英文、符号。
ASCLL使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息,对于表示英文、数字来说是够用。
GBK
GBK是中国的码表,包含了几万个汉字等字符,同时也要兼容ASCLL编码,GBK编码中一个中文字符一般以两个字节的形式存储。
Unicode字符集
统一码,也叫万国码。是计算机领域里的一项行业标准。
UTF-8是Unicode的一种常见的编码方式。
UTF-8编码后一个中文一般以三个字节的形式存储,同时也要兼容ASCLL编码表。
技术人员都应该使用UTF-8的字符集编码。
汉字存储和展示过程解析:
汉字–>查询Unicode码表–>码表中对应的数字–>编码->UTF-8–>转换二进制–>存储计算机
读取二进制–>存储计算机–>解码–>UTF-8–>码表对应的数字–>查询–>Unicode码表–>展示–>汉字
注意:英文和数字在任何国家的编码中都不会乱码。
英文和数字等在任何国家的字符集中都占字节
GBK字符中一个中文字符占2个字节
UTF-8编码中一个中文一般占3个字节
编码前的字符集和解码时的字符集必须一致,否则会出现字符乱码,英文和数字不会乱码。
IO流
I表示input,把硬盘文件中的数据读入到内存的过程,称之输入,负责读。
O表示output,把内存中的数据写出到硬盘文件的过程,称之输出,负责写。
IO分类:
按流的方向分:输入流、输出流
按流中的数据最小单位分:字节流(操作所有类型的文件),字符流(只能操作纯文本文件)。
字节输入流:读取文件的全部字节。
字节流适合做一切文件数据的拷贝。
IO流资源释放的方式:
try-with-resource