异常类:
package zz.itheima.exception_io;
import java.util.Scanner;
//异常类:
public class ExceptionDemo {
// 如果在catch块中有return语句,那么finally块还会执行吗?执行的顺序呢?
public static int textFinally(){
try {
int j = 10 / 0; //new ArithmeticException();
} catch (Exception e) {
return 1;//这个return是为了跳出整个方法
}finally{
System.out.println("如果有return语句,看是否执行fanally块?");
return 0;//这个return 为为了return 方法的返回类型int
}
}
public static void main(String[] args) {
System.out.println(textFinally());//如果有return语句,看是否执行fanally块? 0,事实证明无论如何都要执行finally块。
//下标越界异常
int [] arr = {1,2,3};
try {
System.out.println(arr[1]);
} catch (Exception e) {
System.out.println("如果没有异常看看这句话是否输出了?");//事实证明如果没有异常,就不输出了。只有存在异常了才执行catch块中的代码。
e.printStackTrace();
}
// 第一种情况:try中没有产生异常 会跳过catch继续往下执行
// 第二种情况:try中产生了异常 接下来先执行catch,然后再往下执行
// 第三种情况:捕捉时类型跟抛出的异常对象的类型不一致 程序中断
//空指针异常
// String s = null;
// System.out.println(s.length());
//数学运算异常
Scanner sc = new Scanner(System.in);
try {
System.out.println("请输入第一个整数");
int n1 = sc.nextInt();
System.out.println("请输入第二个整数");
int n2 = sc.nextInt();
System.out.println(n1 / n2);
} catch (Exception e) {
e.printStackTrace();
System.out.println("必须输入数字!");//自定义异常提示信息
} finally{
//这里一般用来释放一些资源,比如IO和数据库
System.out.println("fnally code");
}
}
}
自定义异常:
package zz.itheima.exception_io;
public class SaxException extends Exception {
public SaxException(){
super("性别必须是男或者女!");
}
}
声明异常:
package zz.itheima.exception_io;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestThrows {
public static void testNull(String s)throws NullPointerException{
System.out.println(s.length());
}
public static void setSex()throws InputMismatchException,SaxException{
Scanner sc = new Scanner(System.in);
System.out.println("请输入性别:");
String sex = sc.nextLine();
if (!sex.equals("男")&&!sex.equals("女")) {
throw new SaxException();
}
}
public static void main(String[] args) {
try {
testNull(null);
} catch (Exception e) {
e.printStackTrace();
}
try {
setSex();
} catch (Exception e) {
e.printStackTrace();
}
}
}
文件:
package zz.itheima.exception_io;
import java.io.File;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
public class TestFile {
public static void main(String[] args) {
//测试File类(文件)
System.out.println("得到系统当前的分隔符为:"+File.separator);
File f = new File("E:"+File.separator+"1.txt");//得到文件类对象
if (f.exists()) {//判断文件是否存在
System.out.println("存在");
}else {
try {
//创建新文件
f.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
//把毫秒值转换成日期格式
Calendar c = Calendar.getInstance();
c.setTimeInMillis(f.lastModified());//获取文件最后修改日期,文件最后修改日期是毫秒值
Date d = c.getTime();
DateFormat df = DateFormat.getDateTimeInstance();
System.out.println(df.format(d));
//重命名
f.renameTo(new File("E:\\2.text"));
//是否只读
System.out.println(f.canRead());
//文件内容长度
System.out.println(f.length());
//文件路径
System.out.println(f.getPath());
//是不是文件
System.out.println(f.isFile());
//删除文件
f.delete();
}
}
文件夹:
package zz.itheima.exception_io;
import java.io.File;
public class TestDir {
public static void main(String[] args) {
//测试File类(文件夹或者目录)
File f = new File("E:\\aaa\\bbb");
if (f.exists()) {//文件夹是否存在
System.out.println("存在");
}else {
f.mkdirs();//创建多级目录
}
System.out.println(f.isDirectory());//是否是文件夹或者(目录)
System.out.println(f.getName());//获取文件夹名称
f.renameTo(new File("e:\\bbb\\ccc"));
File files = new File("E:\\360Downloads");
File[] temp = files.listFiles();//获取某文件夹下的所有文件(File对象)
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i].getName());
}
System.out.println("***********************");
String[] names = files.list();//获取某文件夹下的所有文件名称(String)
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
File file = new File("E:\\ee");
file.delete();//只能删除空的文件夹
}
}
过滤器:
package zz.itheima.exception_io;
import java.io.File;
import java.io.FilenameFilter;
//字节码文件过滤器
public class ClassFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
if (dir.exists()&&dir.isDirectory()) {
if (name.endsWith(".class")) {
return true;
}else {
return false;
}
}else {
return false;
}
}
}
测试过滤器:
package zz.itheima.exception_io;
import java.io.File;
public class TestClassFilter {
public static void main(String[] args) {
//测试classFilter过滤器
File file = new File("D:\\demo");
String [] names = file.list(new ClassFilter());
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
例子一:
package zz.itheima.exception_io;
import java.io.File;
public class Demo1 {
public static void main(String[] args) {
//在你电脑硬盘的某个地方新建一个文本文件(随意命名),然后输出该文件的路径,然后把名字改为java.txt,然后删掉该文件
File f = new File("E:"+File.separator+"hello.txt");
try {
if (f.exists()==false) {
//如果不存在就创建新文件
f.createNewFile();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(f.getPath());
f.renameTo(new File("E:"+File.separator+"java.txt"));
System.out.println(f.getPath());
// 判断你电脑硬盘上某个文件是否存在,是否只读,并输出文件大小
File f1=new File("e:"+File.separator+"1.txt");
if(f1.exists())
{
if(f1.canWrite()==false)
System.out.println("只读");
else
System.out.println("可写");
System.out.println(f1.length());
}
else {
System.out.println("不存在");
}
}
}
例子二:
package zz.itheima.exception_io;
import java.io.File;
public class Demo2 {
public static void main(String[] args) {
// 在你电脑的E盘创建一个名为java的文件夹
File file = new File("E:\\java");
if (file.exists()==false) {
file.mkdir();
}
// 输出你电脑上某个文件夹的名字,并输出该文件夹下所有文件的名字
File ppts=new File("e:\\ppts");
File[] temp=ppts.listFiles();
for (File file1 : temp) {
System.out.println(file1);
}
String[] str=ppts.list();
for (String string : str) {
System.out.println(string);
}
}
}
JavaSE(13)(异常和文件类)
最新推荐文章于 2022-07-12 09:52:33 发布