异常扩展及File类基础解析

异常

概述:异常时java程序在运行中出现的错误

分类:

error:服务器崩溃

Exception:小瑕疵,java底层可以帮我们解决

jvm默认是如何处理异常的

1.main函数收到这个问题,有两种处理方式

自己处理问题,然后继续运行

知己没有针对问题的处理方式,只能交给调用main的jvm处理。jvm有一个默认的异常处理机制,就将该异常进行处理,并将该异常的名称和异常的信息,异常出现的位置打印在控制台上,同时程序停止运行。

throws的方式处理异常

定义功能方法时,需要把出现的问题暴露出来,让调用者去处理。通过throws把异常标识在方法上。(Exception  编译时异常      ,RuntimeException  运行时异常)

throw和throws区别*

概述:

        throw:在功能方法内部出现某种情况,程序不能继续运行,需要跳转时,就用throw把异常对象抛出。

区别:

throws:用在方法上、声明后面,跟的是异常类型,可以跟很多个异常类名,用逗号隔开,表示抛出异常,有调用该方法的调用者完成

throw:用在方法內,跟的是异常的对象名称,只能抛出一个异常对象名,表示抛出异常,由方法体内地语句处理。

练习:

package com.throw异常.cn;

import java.util.Comparator;
import java.util.Objects;

public class Student implements Comparable<Student>{
	private String name;
	private int age;
	public Student() {};
	public Student(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) throws ABCsf {
		if(age>0&&age<150) {
		this.age = age;
		}else {
			throw new ABCsf("非法年龄");
		}
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int hashCode() {
		return 10;
	}
	@Override
	public boolean equals(Object obj) {
//		if (this == obj)
//			return true;
//		if (obj == null)
//			return false;
//		if (getClass() != obj.getClass())
//			return false;
		Student other = (Student) obj;
		return age == other.age && Objects.equals(name, other.name);
	}
	
	public int compareTo(Student o) {
		// TODO Auto-generated method stub
		int num=this.age-o.age;
		return num==0? this.name.compareTo(o.name):num;
	}
	
}


package com.throw异常.cn;

public class ABCsf extends Exception {

	/**作者,wz
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public ABCsf() {};
	public ABCsf(String s) {
		
		super(s);
	};
}


package com.throw异常.cn;

public class Demo1 {
 public static void main(String[] args) throws ABCsf {
	
	 Student p=new Student();
	 p.setAge(-18);
	 System.out.println(p.getAge());
}
	
}

File类·(路径)

概述:

File更应该叫一个路径,文件路径或者文件夹路径

路径分为相对路径和绝对路径

绝对路径是一个固定的路径,从盘符开始。

相对路径相对某个位置,例如在eclipse下,指当前项目下,在dos下指的是当前路径。

File构造方法

File(String pathname);根据一个路径得到File对象。

File(String  parent,String child);根据一个目录和一个子文件/目录得到File对象。

File(File parent,String child);根据一个父File对象和一个子文件/目录得到File对象。

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f1=new File("xxx.txt");
		System.out.println(f1.exists());//判断路径是否存在
	}

}

创建功能

public boolean createNewFile();创建文件,如果文件存在,不创建

public boolean mkdir();创建文件夹,如果存在,就不创建。

public boolean mkdirs();创建文件夹,如果父文件不存在,会帮你创建出符文剑夹。

注意事项:如果你创建文件或文件夹忘了写盘符路径,那么默认在项目下。

练习:

public class Demo2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f1=new File("yyy.txt");
		System.out.println(f1.createNewFile());//创建文件
	}

}


	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
//		File f1=new File("aaa");
//		System.out.println(f1.mkdir());//创建文件夹
//		File f2=new File("abb.txt");
//		System.out.println(f2.mkdir());//根据名称创建文件夹
		File f3=new File("mm\\ss\\xx\\aaa\\vv");
		System.out.println(f3.mkdirs());//根据名称创建文件夹
	}

}

File重命名和删除功能

public boolean renameTo(File dest);把文件重命名为指定的文件路径。

public boolean delete();删除文件或文件夹。

注意事项:

重命名:如果路径相同,那就是改名

                如果路径不同,那就是剪切

删除:java中的删除不走回收站

        要删除一个文件夹,请注意改文件夹內不能包含其他文件或文件夹。

练习:

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
	//	File f1=new File("xxx.txt");
		//System.out.println(f1.createNewFile());
		File f2=new File("yyy.txt");
		//System.out.println(f2.createNewFile());
		File f3=new File("D:\\zzz.txt");
		System.out.println(f2.renameTo(f3));//改名加剪切,内容不会丢失
	}

	File f1=new File("xxx.txt");
		//System.out.println(f1.createNewFile());//判断路径是否存在
	System.out.println(f1.delete());//删除文件,文件夹里有东西就删不了

File判断功能

public boolean isDirectory();判断是否有目录

public boolean isFile();判断是否有文件

public boolean exists();判断是否存在

public boolean canRead(); 判断是否可读

public boolean canWrite();判断是否可写。

public boolean isHidden();判断是否隐藏。

练习:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f1=new File("xxx.txt");
		System.out.println(f1.isDirectory());//判断是否是文件夹
		System.out.println(f1.isFile());//判断是否是文件
		System.out.println(f1.canRead());//判断是否可读(windos默认为所有文件可读)
		f1.setWritable(false);//设置当前文件不可写
		System.out.println(f1.canWrite());//判断是否可写
		System.out.println(f1.isHidden());//判断是否隐藏
		
	}

File类的获取功能

public String getAbsolutePath();获取绝对路径

public String getPath();获取相对路径

public String getName();获取名称。

public long length();获取长度(字节数)

public long lastMoidfied();获取最后一次修改时间(毫秒)

public String【】 list();获取指定目录下单所有文件或文件夹的名称数组。

public File【】 listFiles();获取指定目录下单所有文件或文件夹的File数组。

注意:路径最好没有中文。

练习:

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f1=new File("xxx.txt");
		System.out.println(f1.createNewFile());
		System.out.println(f1.getAbsolutePath());
		System.out.println(f1.getPath());
		System.out.println(f1.getName());
		System.out.println(f1.length());
		System.out.println(f1.lastModified());
		
	}

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f1=new File("C:\\Users\\eclipse-workspace\\Stu20230203\\src\\com\\file\\cn");
		String[] arr=f1.list();
		for (String string : arr) {
			if(string.contains(".java")) {
			System.out.println(string);
			}
		}
		
		
	}
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f1=new File("C:\\Users\\eclipse-workspace\\Stu20230203\\src\\com\\file\\cn");
		File[] arr=f1.listFiles();
		for (File file : arr) {
			System.out.println(file);
		}
		
		
	}

练习:入伙获取目录下后缀为.ava的文件名称。

文件名称过滤器:

public String【】 list(FilenameFilter filter);

public File【】 listFiles(FileFilter filter);

需求:判断E盘下是否有后缀名为.java文件,有就说出全称。

public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f1=new File("C:\\Users\\eclipse-workspace\\Stu20230203\\src\\com\\file\\cn");
		String[] arr=f1.list(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				File file=new File(dir, name);
				return file.isFile()&&file.getName().endsWith(".java");
				//其中isFile判断是不是一个正经文件
				//getName()获取文件名称
				//endswith(“。wmv”)测试此字符串是否以指定后缀结束
			}
		});
		
		for (String string : arr) {
			System.out.println(string);
		}
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值