当前位置: 首页 > news >正文

JAVA 异常+File

异常

编译阶段:

java不会运行代码,只会检查语法是否错误,或者做一些性能的优化 

提醒程序员检查本地信息

运行阶段:

代码出错而导致程序出现的问题

异常的作用

package myexcepyion;public class ExceptionDemo1 {public static void main(String[] args) {//1。创建学生对象Student s1=new Student();//年龄:18~40岁s1.setAge(50);}
}
package myexcepyion;public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {if(age<18||age>40){//System.out.println("年龄超出范围");throw new RuntimeException();}else{this.age = age;}}
}

异常的处理方式

 

package myexcepyion;public class ExceptionDemo2 {public static void main(String[] args) {int[] arr={1,2,3,4,5,6};try {//可能出现异常的代码System.out.println(arr[10]);//此处出现了异常,程序就会在这里创建一个ArrayIndexoutofBoundsException对象//new ArrayIndexOutOfBoundsException();//拿着这个对象到catch的小括号中对比,看括号中的变量是否可以接收这个对象//如果能被接收,就表示该异常就被捕获(抓住),执行catch里面对应的代码//当catch里面所有的代码执行完毕,继续执行try...catch体系下面的其他代码}catch (ArrayIndexOutOfBoundsException e){//如果出现了ArrayIndexOutOfBoundsException异常,我该如何处理System.out.println("索引越界了");}System.out.println("看看我执行了吗");}
}

捕获异常灵魂四问

异常中的常见方法

printStackTrace()仅仅知识打印信息,不会停止程序运行 

package myexcepyion;import java.util.Set;public class ExceptionDemo3 {public static void main(String[] args) {/*public string getMessage()public string tostring()public void printstackTrace()返回此 throwable 的详细消息字符串返回此可抛出的简短描述在底层是利用system.err.println进行输出把异常的错误信息以红色字体输出在控制台细节:仅仅是打印信息,不会停止程序运行*/int[] arr={1,2,3,4,5,6};try {System.out.println(arr[10]);}catch (ArrayIndexOutOfBoundsException e){//String message=e.getMessage();//System.out.println(message);//Index 10 out of bounds for length 6//String str=e.toString();//System.out.println(str);//java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 6e.printStackTrace();}//System.out.println("看看我执行了吗");//正常的输出语句System.out.println(123);//错误的输出语句(用来打印错误信息)System.err.println(123);}
}

抛出异常

练习

package myexcepyion;public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name)throws RuntimeException {int len=name.length();if(len<3||len>10){throw new RuntimeException();}this.name = name;}public int getAge() {return age;}public void setAge(int age) throws RuntimeException{if(age<18||age>40){throw new RuntimeException();}this.age = age;}@Overridepublic String toString() {return "GirlFriend{" +"name='" + name + '\'' +", age=" + age +'}';}
}
package myexcepyion;import java.util.Scanner;public class Test1 {public static void main(String[] args) {//1.创建键盘录入的对象Scanner sc=new Scanner(System.in);//2.创建女朋友的对象GirlFriend gf=new GirlFriend();//3.接收女朋友的姓名while(true){try{System.out.println("请输入你心仪的女朋友的名字");String name=sc.nextLine();gf.setName(name);//4.接收女朋友的年龄System.out.println("请输入你心仪的女朋友的年龄");String ageStr=sc.nextLine();int age=Integer.parseInt(ageStr);gf.setAge(age);//如果所以的数据都是正确的,那么跳出循环break;}catch (NumberFormatException e){System.out.println("年龄的格式有误,请输入数字");}catch (RuntimeException e){System.out.println("姓名的长度或者年龄的范围有误");}}System.out.println(gf);}
}

自定义异常

File 

package myfile;import java.io.File;public class FileDemo1 {public static void main(String[] args) {//1.根据字符串表示的路径,变成File对象String str="C:\\Users\\谢永琪\\Desktop\\a.txt";File f1=new File(str);System.out.println(f1);//C:\Users\谢永琪\Desktop\a.txt//2.父级路径:C:\Users\谢永琪\Desktop//子级路径:a.txtString parent="C:\\Users\\谢永琪\\Desktop";String child="a.txt";File f2=new File(parent,child);System.out.println(f2);//C:\Users\谢永琪\Desktop\a.txt//3.把一个File表示的路径和String表示路径进行拼接File parent2=new File("C:\\Users\\谢永琪\\Desktop");String child2="a.txt";File f4=new File(parent2,child2);System.out.println(f4);//C:\Users\谢永琪\Desktop\a.txt}
}

File的常见成员方法 

1.判断,获取

package myfile;import java.io.File;public class FileDemo3 {public static void main(String[] args) {/*public long length()返回文件的大小(字节数量)public string getAbsolutePath()返回文件的绝对路径public string getPath()返回定义文件时使用的路径public string getName()返回文件的名称,带后缀public long lastModified()返回文件的最后修改时间(时间毫值)*///1.length 返回文件的大小(字节数量)//细节:这个方法只能获取文件的大小,单位是字节//如果单位我们要是M,G,可以不断的除以1024//len /1024 KB///1024 / 1024 MB//细节2:这个方法无法获取文件夹的大小//如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起File f1=new File("D:\\cd");long len=f1.length();System.out.println(len);System.out.println("-----------------------");//2.getAbsolutePath()返回文件的绝对路径File f3=new File("D:\\cd");String path1=f3.getAbsolutePath();System.out.println(path1);File f4=new File("myfile\\cd");String path2=f4.getAbsolutePath();System.out.println(path2);System.out.println("-----------------------");//3.getPath返回定义文件时使用的路径File f5=new File("D:\\cd");String path3=f3.getPath();System.out.println(path3);File f6=new File("myfile\\cd");String path4=f6.getPath();System.out.println(path4);System.out.println("-----------------------");//4.getName 返回文件的名称,带后缀File f7=new File("D:\\cd");String name1=f7.getName();System.out.println(name1);System.out.println("----------------------");//5.lastModified返回文件的最后修改时间(时间毫值)File f9=new File("D:\\cd");long time=f9.lastModified();System.out.println(time);}
}

 2.创建、删除

前三个方法

package myfile;import java.io.File;
import java.io.IOException;public class FileDemo4 {public static void main(String[] args) throws IOException {/*public boolean createNewFile()创建一个新的空的文件public boolean mkdir()创建单级文件夹public boolean mkdirs()创建多级文件夹public boolean delete()    删除文件、空文件夹*///1.createNewFile 创建一个新的空的文件//细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true//如果当前路径表示的文件是存在的,则创建失败,方法返回false//细节2:如果父级路径是不存在的,那么方法会有异常I0Exception//细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件/*File f1=new File("D:\\aaa\\b.txt");boolean b=f1.createNewFile();System.out.println(b);*///2.mkdir make Directory,文件夹(目录)//细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false//细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。/*File f2=new File("D:\\aaa\\aaa\\bbb\\ccc");boolean b=f2.mkdir();System.out.println(b);*///3.mkdirs 创建多级文件夹//细节:即可以创建单击文件夹,又可以创建多级文件夹File f3=new File("D:\\aaa\\aaa\\bbb\\ccc");boolean b=f3.mkdirs();System.out.println(b);}
}

删除方法

package myfile;import java.io.File;public class FileDemo5 {public static void main(String[] args) {/*public boolean delete()    删除文件、空文件夹细节:如果删除的是文件,则直接删除,不走回收站。如果删除的是空文件夹,则直接删除,不走回收站如果删除的是有内容的文件夹,则删除失败*///1.创建File对象File f1=new File("D:\\aaa\\bbb");//2.删除boolean b=f1.delete();System.out.println(b);}}

3.获取并遍历

package myfile;import java.io.File;public class FileDem6 {public static void main(String[] args) {//public File[] listFiles() 获取当前该路径下所有内容//1.创建File对象File f=new File("D:\\aaa");//2.listFiles方法//作用:获取aaa文件夹里面的所有内容,把所有的内容放到数组中返回File[] files=f.listFiles();for(File file:files){//file依次表示aaa文件夹里面的每一个文件或者文件夹System.out.println(file);}}
}

 ​​​

练习

package Test;import java.io.File;
import java.io.IOException;public class Test1 {public static void main(String[] args) throws IOException {//需求:在当前模块下的aaa文件夹中创建一个a.txt文件//1.创建a.txt的父级路径File f1=new File("..\\myfile\\aaa");//2.创建父级路径//如果aaa是存在的,那么此时创建失败的,//如果aaa是不存在的,那么此时创建成功的f1.mkdirs();File f2=new File(f1,"a.txt");boolean b=f2.createNewFile();if(b){System.out.println("创建成功");}else{System.out.println("创建失败");}}
}

 

package Test;import java.io.File;public class Test2 {public static void main(String[] args) {/*需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(暂时不需要考虑子文件夹)*/File file=new File("D:\\aaa");boolean b=haveAVI(file);System.out.println(b);}/*作用:用来找某一个文件夹中,是否有以avi结尾的电影形参:要查找的文件夹返回值:查找的结果存在true不存在false*/public static boolean haveAVI(File file){//1.进入aaa文件夹,而且要获取里面的所有内容File[] f=file.listFiles();//2.遍历数组获取里面的每一个元素for(File f1:f){//f:依次表示aaa文件夹里面每一个文件或者文件夹的路径if(f1.isFile()&&f1.getName().endsWith(".avi"));return true;}//3.如果循环结束以后还没有找到,返回falsereturn false;}
}
package Test;import java.io.File;public class Test3 {public static void main(String[] args) {/*需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(需要考虑子文件夹)*/File file=new File("C:\\");findAVI(file);}/*作用:用来找某一个文件夹中,是否有以avi结尾的电影形参:要查找的文件夹返回值:查找的结果存在true不存在false*/public static void findAVI(File file){//1.进入src文件夹,而且要获取里面的所有内容File[] f=file.listFiles();//2.遍历数组获取里面的每一个文件或者文件夹if(f!=null){for(File f1:f){//3.判断。如果是文件,执行业务逻辑if(f1.isFile()){String name=f1.getName();if(name.endsWith(".avi")){System.out.println(f1);}}else{//是文件夹,递归findAVI(f1);}}}}
}

 

package Test;import java.io.File;public class Test4 {public static void main(String[] args) {/*删除一个多级文件夹如果我们要删除一个有内容的文件夹1.先删除文件夹里面所有的内容2.再删除自己*/File file=new File("D:\\aaa");delete(file);}public static void delete(File src){File[] files=src.listFiles();//遍历for(File file:files){if(file.isFile()){file.delete();}else{delete(file);}}src.delete();}
}

 

package Test;import java.io.File;public class Test5 {public static void main(String[] args) {/*需求:统计一个文件夹的总大小*/File file=new File("D:\\应用");long len=getlen(file);System.out.println(len);}public static  long getlen(File src){long len=0;File[] files=src.listFiles();for(File file:files){if(file.isFile()) {len += file.length();}else {len+=getlen(file);}}return len;}
}

相关文章:

  • 分享4-5月工信部排考计划
  • Altium Designer安装教程
  • LeetCode19.删除链表的倒数第N个节点
  • __call__ 方法
  • 文章记单词 | 第38篇(六级)
  • 《GPT-4.1深度解析:AI进化新标杆,如何重塑行业未来?》
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析
  • [python]@staticmethod
  • 【AI提示词】退休规划顾问专家
  • SAP系统中MD01与MD02区别
  • Manus AI:突破多语言手写识别技术壁垒之路
  • 嵌入式设备网络的动态ID分配机制实现
  • yolo系列发展
  • Linux系统编程---多进程
  • Linux 系统编程 day5 进程管道
  • 启动vite项目报Unexpected “\x88“ in JSON
  • FreeFileSync:文件同步对比工具
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(五级)真题
  • SimBody安装
  • PFC 是什么?
  • 从高铁到住房:“富足议程”能否拯救美国的进步主义?
  • 用户称被冒用身份证异地办卡申请注销遭拒,澎湃介入后邯郸联通着手办理剥离
  • 上海浦东:顶尖青年人才最高可获700万元资助及1亿元项目补贴
  • 上海印发《新时代新征程促进民营经济高质量发展的若干措施》(全文)
  • 非法收受财物2.29亿余元,窦万贵受贿案一审开庭
  • 2025年世界互联网大会亚太峰会数字金融论坛举行