您的位置:首页 > 编程语言 > Java开发

Java学习之文件及异常处理

2015-10-08 17:53 465 查看
import java.io.File;

/*
* 目的:从根目录遍历,找出该盘下所有以.avi以及.rmvb、.mp4结尾的文件
*
*  1、遍历目录
* 		是文件:
* 			判断:
* 				是:.avi或者.rmvb或者.mp4结尾的文件,输出文件地址以及文件名
* 				不是:忽略
*		是目录:重复步骤1
*
*/
public class FileDemo {
public static void main(String[] args) {
File  F = new File("D:\\");
File [] arrayFile = F.listFiles();
for(File file:arrayFile){
recursionFind(file);//调用函数处理
//	System.out.println(file);
}
System.out.println("查找结束");
}

private static void recursionFind(File file) {
// TODO Auto-generated method stub
if(file.isFile()){//判断是否为文件
if (file.getName().endsWith(".avi")||file.getName().endsWith(".rmvb")||file.getName().endsWith(".mp4")) {
System.out.println(file.getPath()+"------"+file.getName());
}
}
else if(file.isDirectory()){//判断是否为目录     注①
File [] dir = file.listFiles();  //获取此文件夹下file列表
if(dir!=null){//判断是否为空,如果不为空则继续,为空会报错   NullPointerException  注②
for(File sonfile:dir){
//	if(sonfile!=null){//判断是否为空,如果不为空则继续,为空会报错    NullPointerException
recursionFind(sonfile);
//	}
}
}
}
}

}


  注①:isFile()与isDirectory()两个判断过后有第三种可能。





注②:目录下为空指针,C盘下此类目录尤其多





——————————————————————————————————————————————————————————————————————————————

File类的功能
A:创建功能

public boolean createNewFile()创建新文件

public boolean mkdir() 创建新目录

public boolean mkdirs() 创建新目录,允许目录下面有目录

B:删除功能

  public boolean delete() 删除目录,如果目录中有内容,则删除失败

C:重命名功能

  public boolean renameTo(File dest)重命名文件,dest为重命名的名字,可以给出绝对路径,作为剪切功能使用
D:判断功能

  public boolean isDirectory()判断是否为一个目录

  public boolean isFile()判断是否为一个文件

  public boolean exists()判断文件是否存在

  public boolean canRead()判断是否可读

  public boolean canWrite()判断是否可写

  public boolean isHidden()判断是否为隐藏文件

E:获取功能

  public String getAbsolutePath()获取绝对路径

  public String getPath()//获取路径

  public String getName()//获取文件名

  public long length()//获取文件大小(单位为字节)

  public long lastModified()//获取最后一次修改的时间,返回的是一个long型数值time

      Date date = new Date(time);

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

      String s = sdf.format(date);

      System.out.println(s);//获取到我们能看懂的时间

F:高级获取功能

  public String[] list()//返回一个字符数组,此目录下的文件名

  public File[] listFiles()//返回此目录下的文件列表

G:过滤器功能

查询API

————————————————————————————————————————————————————————————————————————————

程序的异常:Throwable

  严重问题:Error 此类问题我们不能解决,这种问题一般很严重,例如:内存泄漏

  一般问题:Exception

    编译期问题:不是RuntimeException及其子类的异常必须进行处理,因为此类异常不处理,编译就不能通过,无法运行。

    运行期问题:RuntimeException及其子类,这类问题一般是代码不够严谨造成的,需要修正代码。

异常的处理:

JVM的默认处理

  把异常的名称,原因,位置等信息输出到控制台,但是程序不再继续执行。

程序员处理

  try...catch...finally

    自己编写处理代码,后面的程序可以继续执行

  throws

    把自己无法处理的问题在方法上声明,让调用者知道。

Throws和Throw的区别

Throws

  用在方法声明后面,跟的是异常类名

  可以跟多个异常类名,用逗号隔开

  表示抛出异常,由该方法的调用者来处理

  throws表示出现异常的一种可能性,该异常不一定发生

Throw

  用在方法体内,跟的是异常对象名

  只能抛出一个异常对象名

  表示抛出异常,由方法体内的语句处理

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

finally,final,finalize的区别

final:最终的意思,可以修饰类,成员变量,成员方法

  修饰类,该类不能被继承

  修饰变量,该变量是常量

  修饰方法,该方法不能被重写

finally:是异常处理的一部分,用于释放资源

一般来说,代码肯定会执行,特殊情况:在执行finally之前jvm推出了

finalize:是Objective类的一个方法,用于垃圾回收

下面的代码值得好好分析:在执行finally之前,return返回路径已经形成,即时执行finally中的语句,return的值依然不变,但是如果在finally中添加return语句,情况则不一样。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: