java从入门到弃坑第十二天

1.异常:程序出现的不正常的情况。分为编译时异常和运行时异常。

              编译时异常:开始就必须处理,否则程序就无法运行。

              运行时异常:在程序运行时出现的异常,需修改程序解决。

   异常演示:除数不能为0:java.lang.ArithmeticException: / by zero

public class ExceptionDemo6 {
	public static void main(String[] args) {
		System.out.println(10/0);
	}
}
//Exception in thread "main" java.lang.ArithmeticException: / by zero
针对异常,系统默认处理方案为把问题的类名,错误原因,错误的位置等信息打印在控制台,以便我们观察。

但是系统出问题时,不应该直接停止,而是停止出问题的部分让其他部分继续执行。

2.异常处理:A:try...catch...finally

                     B:throws

3.try...catch...finally:try{

可能出现问题的代码

                                   }catch (异常类名  变量名){

针对异常的代码处理

   }finally{

释放资源的地方

   }

   finally特点:被finally修饰的语句一定会被执行,除了在执行finally之前jvm虚拟机退出。

   注:针对多个异常,可以每一个出现问题的地方使用一次try  catch语句,也可以采用一个try,多个catch'的情况

          遇到try里面的问题,自动和catch进行匹配,匹配到就执行catch中的内容,在执行后面的代码。

public class ExceptionDemo6 {
	public static void main(String[] args) {
		try {
			System.out.println(10/0);
			int arr[]=new int[3];
			System.out.println(arr[3]);
		} catch (ArithmeticException e) {
			System.out.println("除数不能为0");
		} catch (ArrayIndexOutOfBoundsException e){
			System.out.println("数组越界");
		}
	}
}
//除数不能为0
由上述代码可知:try语句中存在的异常可以匹配多个catch时,一旦匹配到第一个catch,就会执行其中的语句并且不                     会在匹配其他catch的情况。且如果catch中的异常由子父关系,父类异常必须在最后。

4.throwable中存在printStackTrace():打印异常信息,程序从出问题的地方开始就会打印创建一个该异常对应的对      象,该对象直接调用打印方法
5.throws:用在方法声明的后面,跟异常类名,可以跟多个异常,用逗号隔开。此方法表示抛出异常,由方法的调用          者来处理该异常,throws表示出现异常的一种可能,并不一定会发生这些异常。

6.A:子类重写父类方法时,子类方法必须抛出和父类相同的异常       或     父类异常的子类。

   B:父类抛出多个异常时,子类只能抛出    父类异常的子类。

   C:如果父类方法没有异常,那么子类重写的方法不能抛出异常,遇到异常只能在子类方法中try处理。

7.throw和throws:throws表示出现异常的一种可能性,并不一定会发生这些异常

     throw则是抛出了异常,执行throw则一定抛出了某种异常

8.编译时期异常必须在方法声明上抛出,运行时期异常可以抛出也可以不抛出。

9.File:文件和目录的抽象表示形式。

   构造方法:File(String pathname):把一个路径名称封装成File对象。

                     File(String parent, String child):把一个父路径和一个子路径封装成一个File对象。

                     File(File parent, String child):把一个父路径File对象和一个子路径封装成一个File对象。

   成员方法:A:public boolean createNewFile():如果文件不存在,就创建。否则,不创建。

     B:public boolean mkdirs():如果目录不存在,就创建。否则,不创建。

                     C:public boolean delete():既可以删除文件,又可以删除目录。

 判断功能:public boolean isDirectory():是否是目录
     public boolean isFile():是否是文件
     public boolean exists():是否存在
     public boolean canRead():是否可读
     public boolean canWrite():是否可写
     public boolean isHidden():是否隐藏

 获取功能:public String getAbsolutePath():获取绝对路径
     public String getPath():获取相对路径
   public String getName():获取名称

10.I/O流:按流向分为输入流和输出流,按数据类型分为字节流和字符流

11.I/O字节流:OutputStream,字节输出流,从虚拟机向外部输出字节,该类为抽象类,所以创建对象应该用其子类

                        FileOutputStream的对象,向文件写入数据的时候:A:创建字节输出流对象。B:调用写数据的方法

                        C:释放资源(关流)

exp:向根目录1.txt中写入“helloworld”

import java.io.FileOutputStream;
import java.io.IOException;


public class OutStreamDemo {
	public static void main(String[] args) throws IOException  {
		FileOutputStream fos=new FileOutputStream("a.txt");
		//创建字节输出流对象,该路径为相对地址,若不存在会自动创建
		byte[]b="holloworld".getBytes();//创建字节数组
		fos.write(b);//向文件中输出目标字节
		fos.close();//释放资源
	}
}
12.字节输出流write方法:write(int b) :一次写一个字节,write(byte[] b, int off, int len) :一次写一个字节数组的一部                                          分,后者写入时效率更高。
13.InputStream:字节输入流,从外部获取字节数据,该类同样为抽象类,所以创建文件是用子类FileInputStream 

                            读取数据步骤:A:创建字节输入流对象。B:调用方法读取数据。C:释放资源(关流)

exp:读取并显示1.txt中的文本。

import java.io.FileInputStream;
import java.io.IOException;

public class InputStreamDemo {
	public static void main(String[] args) throws IOException {
		FileInputStream fis=new FileInputStream("a.txt");//创建字节输入流对象
		int b;
		while((b=fis.read())!=-1){//读取时以ASCII码表方式识别,若没有内容为-1,因此用改循环读取文本部分
			System.out.print((char)b);//将读取到的字节转为字符输出
		}
		fis.close();//关流
	}
}
14.在读取的同时进行文件向外输出,便可完成复制。

exp:把1.txt中的文本内容复制到2.txt中:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDemo {
	public static void main(String[] args) throws IOException {
		FileInputStream fis=new FileInputStream("a.txt");
		FileOutputStream fos=new FileOutputStream("b.txt");
		byte chs[]=new byte[1024];//定义字节数组,加快文件复制速度
		int size;//定义一次复制内容的字节长度
		while((size=fis.read(chs))!=-1){
			fos.write(chs, 0, size);//一次写入以读取到的字节数组
		}
		fis.close();//关流
		fos.close();
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值