exception&file&&IO

文章目录

exception

描述:程序非正常的编译&运行情况,实际使用过程中可能会出现非正常使用或者是代码逻辑上的不严谨导致的额出错。异常的处理规则是,原则上是本级处理,但是无处理语句会见exception抛到上级,直到处理。最高级别是JVM,则抛出error。

  • 异常的分类

  • 异常的体系

  • 异常的处理机制

  • exception与runexception

    • 由分类的层次结构图可以得知,exception是一个大类,包括了runtimexcption.

    • 编译期间的错误是基本的语法错误,是必要进行处理的,是保证程序运行的前提。否则编译无法通过…

    • 运行期异常可以不处理,也可以处理。处理方式一般是抛给上一级,或者使用throw new exception().

    • 在代码块中经常会使用到throw与throws,它们的区别是一个前置是运行期间可能的错误,是可以不处理的,如:

      public static int divide(int a, int b){
      	retuen a/b;	//此处考虑到b考虑为0,则需要throw异常。
      }
      
      public static int divide(int a, int b){
      	if(b!=0)
      		retuen a/b;	
      	else
      		throw new ArithmeticException();
      }
      
  • throw存在于一个函数,抛出的是一个异常对象,“throw new ArithmeticException();”说明这里有一个异常产生了,而throws可以抛出多个异常,说明的是有可能出错,跟的是类名。

  • 异常处理格式&顺序

    try...catch...finally	//完全的标准异常处理格式.
    try...catch...
    try...catch...catch...
    try...catch...catch...fianlly			
    try...finally
    
  • 代码实例

    • try…catch…作为一个完整的格式,一旦catch则异常处理完成,不继续执行相关的部分。

      /*for example*/
      eg:
      try{
      		...
      	}catch(异常类名 变量名) {
      		...
      		e.printStackTrace();//显示简约的异常信息.
      	}
      int a = 5, b = 0;
      	try {
      		System.out.println(a / b);
      	} catch (ArithmeticException ae) {
      		System.out.println("除数不能为0");
      	}
      	System.out.println("over");// 可以显示出over.
      
      
      	eg:
      	try{
      			...
      		}catch(异常类名 变量名) {
      			...
      		}
      		catch(异常类名 变量名) {
      			...
      		}
      			int a = 10;
      			int b = 0;
      			int[] arr = { 1, 2, 3 };
      			try {
      				System.out.println(a / b);
      				System.out.println(arr[3]);
      				System.out.println("testOne");
      			} catch (ArithmeticException e) {
      				System.out.println("testTwo");
      			} catch (ArrayIndexOutOfBoundsException e) {
      				System.out.println("testThree");
      			} catch (Exception e) {
      				System.out.println("testFour");
      			}
      			System.out.println("the last.");
      			System.out.println("over.");
      	/*执行结果:
      	testTwo
      	the last.
      	over.
      	*/
      
      eg:
      try{
      		...
      		
      	}catch(异常类名 |异常类名 变量名) {
      			...
      	}
      
      try{
      	System.out.println(a / b);
      	System.out.println(arr[3]);
      	} catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
      		System.out.println("testAa");
      		e.printStackTrace();//显示简约的异常信息.
      	}
      
      		System.out.println("over.");
      /*执行结果:
      testAa
      over.
      */
      
  • finally异常处理

    • 自定义异常
      继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可。
      /*自定义异常抛出*/
      package TestMc;
      import java.util.Scanner;
      class AaException extends Exception {
      	public AaException() {
      	}
      
      	public AaException(String Message) {
      		super(Message);
      	}
      }
      class AaCheck {
      	public void check(int a) throws AaException {
      		if (a < 0 || a > 5) {
      			throw new AaException();
      		} else
      			System.out.println("输入结果无误.");
      	}
      }
      class TestCc {
      	public static void main(String[] args) {
      		System.out.println("Please input your grades:");
      		Scanner Cv = new Scanner(System.in);
      		int Bb = Cv.nextInt();
      		AaCheck Ba = new AaCheck();
      		try {
      			Ba.check(Bb);
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      		System.out.println("Output Over.");
      	}
      }
      
      
  • 继承异常的care
    继承的子类异常限定范围应该比父类更加小,不能比父类的异常范围更大.
    如:

    父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常。

    父的方法没有异常抛出,子的重写方法不能有异常抛出。

    父的方法抛出多个异常,子的重写方法必须比父少或者小。

File

Java中对I/O操作的工具类,是用来操作文件的主要类。

文件和目录路径名的抽象表示:
用户界面和操作系统使用依赖于系统的路径名字符串命名文件和目录。 这个类提供了一个抽象的,独立于系统的层次化路径名的视图。

  • 构造方法

    • 该类的构造方法有四个,得到的都是对象类型数据,具体的使用如下:

      File(String pathname)	根据一个路径得到File对象。
      File(String parent, String child)	根据一个目录和一个子文件/目录得到File对象。
      File(File parent, String child)	根据一个父File对象和一个子文件/目录得到File对象。
      
      /*for example*/
      File file = new File("e:\\demo\\a.txt");
      File file = new File("e:\\demo","a.txt");
      File file = new File("e:\\demo");
      		  File file2 = new File(file,"a.txt");	
      
      /*第一行==第二行==第三+第四行.*/	
      
  • File类文件的操作

    • 创建功能

      /* 创建成功返回的true,否则false.*/
      public boolean createNewFile()	创建文件 如果存在这样的文件,就不创建了.
      
      /*以下两个只能创建文件夹,不能创建文件,就算是public boolean mkdir(“aa\\aa.txt”)也是创建的是aa.txt的文件夹.*/
      public boolean mkdir()	创建文件夹 如果存在这样的文件夹,就不创建了.
      public boolean mkdirs()	创建文件夹,如果父文件夹不存在,会帮你创建出来.
      
      /*for example*/
      
      File file = new File("e:\\demo"); //在e盘目录下创建一个文件夹demo.
      System.out.println("mkdir:" + file.mkdir());
      
      File file = new File("e:\\demos\\aa"); //在e盘目录下创建一个文件夹demos\aa.
      System.out.println("mkdir:" + file.mkdirs());
      
      File file = new File("e:\\demoss\\aa"); //在e盘目录下创建一个文件夹demoss\aa.
      System.out.println("mkdir:" + file.mkdir()); //无demoss创建失败.
      		
      File file2 = new File("e:\\demo\\a.txt");//在e盘目录demo下创建一个文件a.txt
      System.out.println("createNewFile:" + file2.createNewFile());
      
    • 删除功能

       /*删除功能:public boolean delete()*/
      
      	如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
      
      	Java中的删除直接从硬盘删除,不删除到回收站。
      
      	要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,含有内容则无法删除。
      File file = new File("aaa\\bbb");
      File file2= new File("aaa");
      		System.out.println("delete:" + file6.delete());
      		System.out.println("delete:" + file7.delete());
      
    • 重命名功能

      public boolean renameTo(File dest)
      如果路径名相同,就是重命名,否则就是重命名&&剪切。 
      路径以盘符开始:绝对路径	如:c:\\a.txt
      路径不以盘符开始:相对路径	如:a.txt,默认本位置为项目根目录。
      
      /*for example*/
      File file2 = new File("E:\\testCc.txt");
      File newFile2 = new File("C:\\testCa.jpg");
      System.out.println("renameTo:" + file2.renameTo(newFile2));
      
    • 判断功能

      /*for example*/
      
      public boolean isDirectory()	判断是否是目录
      public boolean isFile()		判断是否是文件
      public boolean exists()		判断是否存在
      public boolean canRead()	判断是否可读
      public boolean canWrite()	判断是否可写
      public boolean isHidden()	判断是否隐藏
      
      public class FileTest {
      	public static void main(String[] args) {
      		
      		File file = new File("testCc.txt");
      
      		System.out.println("isDirectory:" + file.isDirectory());// false
      		System.out.println("isFile:" + file.isFile());// true
      		System.out.println("exists:" + file.exists());// true
      		System.out.println("canRead:" + file.canRead());// true
      		System.out.println("canWrite:" + file.canWrite());// true
      		System.out.println("isHidden:" + file.isHidden());// false
      	}
      }
      
    • 获取功能

      /*for example*/
      public String getAbsolutePath()		获取绝对路径
      public String getPath()		获取相对路径
      public String getName()		获取名称
      public long length()		获取长度。字节数
      public long lastModified()	获取最后一次的修改时间,毫秒值,初试时间01970-01-01:00:00public class FileDemo {
      	public static void main(String[] args) {
      		// 创建文件对象
      		File file = new File("demo\\test.txt");
      
      		System.out.println("getAbsolutePath:" + file.getAbsolutePath());
      		System.out.println("getPath:" + file.getPath());
      		System.out.println("getName:" + file.getName());
      		System.out.println("length:" + file.length());
      		System.out.println("lastModified:" + file.lastModified());
      		
      		Date d = new Date();
      		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      		String s = sdf.format(d);
      		System.out.println(s);
      	}
      }
      
    • 获取功能

      public String[] list()	获取指定目录下的所有文件&&文件夹的名称,返回一个对应的String数组。
      public File[] listFiles()	获取指定目录下的所有文件&&文件夹的File对象数组。
      
      /*for example*/
      
      /*获取对应文件夹下的文件名称.*/
      		File file = new File("C:\\");
      
      		//public String[] list()
      		String[] strArray = file.list();
      		for (String s : strArray) {
      			System.out.println(s);
      		}
      		System.out.println("----分----割----线----");
      
      		//public File[] listFiles()+getName()返回名字.
      		File[] fileArray = file.listFiles();
      		for (File f : fileArray) {
      			System.out.println(f.getName());
      		}
      
    • 过滤功能

      描述:获取指定格式文件名字,并且输出。

      接口:文件名称过滤器:FilenameFilter借口。

      函数如下:

      public String[] list(FilenameFilter filter)
      public File[] listFiles(FilenameFilter filter)
      
      /*获取ttf扩展名的文件*/--"C:\\Windows\\Boot\\Fonts"为测试文件路径.
      
      /*for example----普通for循环结构实现.*/
      
      import java.io.File;
      public class FileTest {
      	public static void main(String[] args) {
      		
      		File file = new File(”C:\\Windows\\Boot\\Fonts“);	
      		File[] fileArray = file.listFiles();
      	
      		for (File f : fileArray) {			
      			if (f.isFile()) {			
      				if (f.getName().endsWith(".ttf")) {			
      					System.out.println(f.getName());
      				}
      			}
      		}
      	}
      }						
      
      /*for example----文件过滤器实现*/
      import java.io.File;
      import java.io.FilenameFilter;
      
      public class FileTest {
      	public static void main(String[] args) {
      		
      		File file = new File("C:\\Windows\\Boot\\Fonts");
      
      		String[] strArray = file.list(new FilenameFilter() {
      			/*匿名类的使用。*/
      			@Override
      			public boolean accept(File dir, String name) {
      
      				// return false,表示不添加;
      				// return true,表示添加;
      				
      				return new File(dir, name).isFile() && name.endsWith(".ttf");
      			}
      		});
      
      		// 遍历
      		for (String s : strArray) {
      			System.out.println(s);
      		}
      	}
      }
      
  • 批量重命名

    • 源文件:
    • 目标文件:

    import java.io.File;
    
    public class FileDemo {
    	public static void main(String[] args) {
    		
    		File srcFolder = new File("E:\\TestCc");
    	
    		File[] fileArray = srcFolder.listFiles();
    	
    		for (File file : fileArray) {		
    
    			int index = name.indexOf("_");
    			String numberString = name.substring(index + 1, index + 4);		
    			int endIndex = name.lastIndexOf('_');
    			String nameString = name.substring(endIndex);
    			String newName = numberString.concat(nameString);
    			File newFile = new File(srcFolder, newName);		
    			file.renameTo(newFile);
    		}
    	}
    }
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值