1. 异常
(1)异常的概述
异常就是Java程序在运行过程中出现的错误。
(2)分类
Throwable 类是 Java 语言中所有错误或异常的超类。
异常的 Exception和Error都是Throwable的直接子类;Exception 又可以分为运行期异常和编译期异常。
(3)异常的处理方式:
● 声明异常throws
//声明异常的格式:
修饰符 返回值类型 方法名 (参数) throws 异常类名1,异常类名2...{ }
代码演示:
public class Demo {
public static void main(String[] args) throws Exception {
show(-1);
}
public static void show(int i) throws Exception {
if (i < 0){
throw new Exception("输入的数小于0");
}else{
System.out.println(i);
}
}
}
● 捕获异常 try…catch…finally
//捕获异常的格式
//如果异常名出现了子父关系,必须要把父类异常类名放在最后面。
try{
//可能出现异常的代码
......
}catch(异常类名1 变量){
//处理异常的语句
......
}catch(异常类名2 变量){
//处理异常的语句
......
}
catch(异常类名... 变量){
//处理异常的语句
......
}finally{
//一定会被执行的语句
......
}
代码演示:
public class Demo1 {
public static void main(String[] args) {
try {
System.out.println(1/0);
}catch (Exception ex){
System.out.println("除数为0");
}finally {
System.out.println("一定会被执行的语句");
}
}
}
(4)Throwable中的常用方法
1、getMessage(): 获取异常信息,返回字符串。
2、toString(): 获取异常类名和异常信息,返回字符串。
3、printStackTrace(): 获取异常类名和异常信息,以及异常出现在程序中的位置。
public class Demo2 {
public static void main(String[] args) {
int[] arr = new int[10];
try {
for (int i = 0; i < arr.length; i++) {
arr[i+1] = i;
}
} catch (ArrayIndexOutOfBoundsException e) {
String message = e.getMessage();
System.out.println(message);
String string = e.toString();
System.out.println(string);
e.printStackTrace();
}finally {
System.out.println("一定执行的语句");
}
}
}
(5)处理异常的原则
● 如果该方法内部能解决该异常,就使用try catch ,如果处理不了,就使用throws抛给调用者处理。如果后续程序需要继续执行就使用try catch,后续程序不需要执行就使用throws。
2. File 文件类
(1)概述
File类就是File文件和目录路径名的抽象表述形式,即Java把文件或者目录文件夹都封装成 File 对象。
(2)File 类的构造方法
1、File(String pathname): 根据一个路径得到一个File对象
2、File(String parent,String child): 根据一个父目录和子文件或子目录得到File对象。
3、File(File parent,String child): 根据一个父File对象和子文件或子目录得到一个File对象。
(3)File 类的创建功能
1、public boolean creatNewFile(): 创建一个新的文件,若这个文件已经存在,就不会再创建。
2、public boolean mkdir(): 创建文件夹,若存在,就不会再创建(这个方法只能创建单层目录)。
3、public boolean mkdirs(): 创建文件夹,若父类文件目录不存在,就自动帮你创建出来,可以创建多层目录。
(4)File 类的删除功能
public boolean delete():删除文件或文件夹。
(5)File 类的重命名
public boolean renameTo(File dest): 把文件重命名为指定的文件路径。
(6)File 类的判断功能
1、public boolean isDirectory(): 判断是否是目录
2、public boolean isFile(): 判断是否是文件
3、public boolean exists(): 判断是否存在
4、public boolean canRead(): 判断是否可读
5、public boolean canWrite(): 判断是否可写
6、public boolean isHidden(): 判断是否隐藏
(7)File 类的获取功能
1、public String getAbsolutePath(): 获取绝对路径。
2、public String getPath(): 获取相对路径。
3、public String getParent(): 返回此抽象路径名父目录的路径名字符串,如果此路径没有指定的父目录,就返回null。
4、public File getParentFile(): 返回此抽象路径名父目录的抽象路径名,如果此路径没有指定的父目录,就返回null。
5、public long getTotalSpace(): 返回此抽象路径名指定的分区大小,返回总容量,单位字节。
6、public long getFreeSpace(): 返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量,单位字节。
7、public String getName(): 获取此文件路径的文件的名称。
8、public long length(): 获取此路径的文件的长度(字节数)。
9、public String[] list(): 获取指定目录下的所有文件或者文件夹的名称数组。
10、public File[] listFiles(): 获取指定目录下的所有文件或者文件夹的File数组。
文件类的案例:
(1)删除多级文件夹
import java.io.File;
public class FileDemo {
//1.删除多级文件夹 递归删除
public static void main(String[] args) {
File file = new File("F:\\Program Files");
deleteFolders(file);
}
private static void deleteFolders(File file) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isFile()){
file1.delete();
}else{
deleteFolders(file1);
}
file1.delete();
}
file.delete();
}
}
(2)判断多级目录下是有以 .jpg的文件,如果有,把后缀名改成.png 递归修改
import java.io.File;
public class FileDemo2 {
//3.判断多级目录下是有以 .jpg的文件,如果有,把后缀名改成.png 递归修改
public static void main(String[] args) {
File file = new File("F:\\aabb");
folderrename(file);
}
private static void folderrename(File file) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isFile()){
String name = file1.getName();
if (file1.isFile() && name.endsWith(".jpg")){
String substring = name.substring(0,name.indexOf(".")+1);
String newName = substring.concat("png");
File file2 = new File(file, newName);
file1.renameTo(file2);
}
}
else{
folderrename(file1);
}
}
}
}