java学习笔记day13 异常处理、File类以及IO流

1391-王同学

发表文章数:51

热门标签

, , ,
首页 » Java » 正文

1. 异常

异常:就是程序出现了不正常的情况。
Exception分为运行期和编译期:
运行期的异常:在编译期是不处理的,在程序运行时候出现了问题,需要我们回来修改代码。
编译期的异常:在编译期就必须处理,否则程序不能通过编译,就更不能正常的执行了。

1.1 异常的体系:

Throwable
Error:严重问题,不需要处理
Exception
RuntimeException:在编译期是不处理的,在程序运行时候出现了问题,需要我们回来修改代码。
非RuntimeException:在编译期就必须处理,否则程序不能通过编译,就更不能正常的执行了。

1.2 异常的默认处理方式

如果程序出现了问题,我们没有做任何的处理,最终JVM会做出默认的处理。
处理方案:
A:把异常的名称,异常的原因,异常出现的位置等信息在控制台输出
B:让程序停止执行

1.3 try… catch…

异常处理:
方案1:try…catch…
用printStackTrace打印堆栈信息
格式:

try {
可能出现异常的代码;
}catch(异常类名 变量名) {
异常的处理代码;
}

public class ExceptionDemo3 {
	public static void main(String[] args) {
		System.out.println("程序开始执行");
		method();
		System.out.println("程序结束执行");
	}
	
	public static void method() {
		try{
			int a = 10;
			int b = 0;
			System.out.println(a/b);
		}catch(ArithmeticException e) {
			e.printStackTrace();
		}
	}
}

方案2:throws

我们通过try…catch可以对异常进行处理了,但是并不是所有的时候我们都有权限进行异常的处理。
也就是说,有些时候我们处理不了,但是,这个时候异常时存在的,不处理也不行,怎么办?
这个时候,Java就提供了throws的处理方案。

格式:

throws 异常类名
注意:这个格式必须跟在方法的括号的后面

注意:

编译时异常时必须要进行处理的,两种处理方案:try…catch…或者throws
如果你采用了throws这种方案,将来谁调用,还得进行处理。

运行时异常可以不用处理,出现问题后我们需要回来修改代码。

 public class ExceptionDemo5 {
	public static void main(String[] args) {
		System.out.println("程序开始执行");
		try {
			method();
		} catch (ParseException e) {
			e.printStackTrace();
		}
		method2();
		System.out.println("程序结束执行");
	}
	
	//编译时异常
	public static void method() throws ParseException {
		String s = "2088-08-08";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d = sdf.parse(s);
		System.out.println(d);
	}
	
	//运行时异常
	public static void method2() throws ArithmeticException {
		int a = 10;
		int b = 0;
		System.out.println(a/b);
	}
	
}

2 File类

创建功能

  • public boolean createNewFile():创建文件
    如果文件不存在,创建文件并返回true
    如果文件存在,创建文件失败并返回false
  • public boolean mkdir():创建目录
    如果目录不存在,创建目录并返回true
    如果目录存在,创建目录失败并返回false
  • public boolean mkdirs():创建多级目录

删除功能

  • public boolean delete():删除文件和目录
    如果一个目录中有内容(目录,文件),就不能直接删除。
    应该先删除目录中的内容,最后才能删除目录

判断功能

public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在

获取功能

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

public class FileDemo {
	public static void main(String[] args) throws IOException {
		//需求1:我要在d盘目录下创建一个文件a.txt
		File f1 = new File("d://a.txt");
		System.out.println("createNewFile:"+f1.createNewFile());
		
		//需求2:我要在d盘目录下创建一个目录bb
		File f2 = new File("d://bb");
		System.out.println("mkdir:"+f2.mkdir());
		System.out.println("-----------------");
		
		//需求3:我要在d盘目录下创建一个多级目录cc//dd

		//一步操作
		File f3 = new File("d://cc//dd");
		System.out.println("mkdirs:"+f3.mkdirs());
		
		//需求4:我要在d盘目录下创建一个文件ee//f.txt
		File f4 = new File("d://ee");
		File f5 = new File("d://ee//f.txt");
		System.out.println("mkdir:"+f4.mkdir());
		System.out.println("createNewFile:"+f5.createNewFile());
	}
}

3. IO流

java学习笔记day13 异常处理、File类以及IO流

  • 字节流:
    InputStream 字节输入流
    OutputStream 字节输出流
  • 字符流:
    Reader 字符输入流
    Writer 字符输出流

3.1 字节流写数据

OutputStream:此抽象类是表示输出字节流的所有类的超类
FileOutputStream:文件输出流是用于将数据写入 File

   构造方法:
   		FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。
 
  成员方法:
  public void write(int b):一次写一个字节
  public void write(byte[] b):一次写一个字节数组
  public void write(byte[] b,int off,int len):一次写一个字节数组的一部分	 
 
   字节流写数据的步骤:
   		A:创建字节输出流对象
   		B:调用写数据的方法
   		C:释放资源
public class FileOutputStreamDemo {
	public static void main(String[] args) throws IOException {
		//创建字节输出流对象
		FileOutputStream fos = new FileOutputStream("a.txt");
		/*
		   创建字节输出流对象做了这样的三件事情:
		   A:调用系统功能创建了文件
		   B:创建字节输出流对象
		   C:让fos这个对象指向a.txt这个文件
		  */
		
		//write(int b) 
		fos.write(65);
		fos.write(66);
		
		//最后我们还要做一个事情
		//close() 关闭此文件输出流并释放与此流有关的所有系统资源。
		fos.close();
	}
}	  

3.2 字节流读数据

字节流读数据:InputStream

FileInputStream 从文件系统中的某个文件中获得输入字节

   构造方法:
   		FileInputStream(String name) 
   
   字节流读数据的步骤:
   		A:创建字节输入流对象
   		B:调用读数据的方法
   		C:释放资源
public class FileInputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		//创建字节输入流对象
		FileInputStream fis = new FileInputStream("b.txt");
		
		
		byte[] bys = new byte[1024]; //1024或者1024的整数倍
		//1G = 1024MB
		//1MB = 1024KB
		//...
		int len;
		while((len=fis.read(bys))!=-1) {
			System.out.print(new String(bys,0,len));
		}
		
		//释放资源
		fis.close();
	}
}	   		

未经允许不得转载:作者:1391-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《java学习笔记day13 异常处理、File类以及IO流》 发布于2020-11-15

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录