类File的对象可以表示文件,也可以表示目录。在创建File对象是,需要指定目录名或文件名的字符串传递给该类的构造方法:
File file = new File("Data.txt");//创建了一个File对象,表示当前目录下的文件Data.txt
File file = new File("D:\\Java\\Hello.java");//指明详细路径及文件名,注意双斜线或用“/”代替
创建了File对象,就可以调用File类中定义的方法,对文件或目录进行管理。常用的方法如下:
boolean exists() 判断文件是否存在,存在返回 true,否则返回false
boolean isFile() 判断是否为文件,是返回true,否则返回false
boolean isDirectory() 判断是否为目录,是返回true, 否则返回false
String getName() 获得文件的名称
String getAbsolutePath() 获得文件的绝对路径
long length() 获得文件的长度(字节数)
boolean createNewFile() 创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
boolean delete() 删除文件,删除成功返回true,否则返回false
File[] listFiles() 返回文件夹内的子文件与子文件夹的数组
进行文件和目录管理师,允许指定相对或绝对目录路径名,但是为了确保程序能在不同的平台上运行,编程时最好不要直接使用绝对路径名。默认的情况下,相对路径名是指相对于当前工作目录。
利用类File可以做一个简单文件搜索器(输入path(文件夹的绝对路径)和key(关键字),输出该文件夹下所有与key匹配的文件)
//显示指定路径所有目录下的所有的file的名字
public void searchFile(String path){
File file = new File(path);
if(file.exists()){
if(file.isFile()){//是文件
list.add2(file.getName());
}else if(file.isDirectory()){//是文件夹
File[] files = file.listFiles();
for(File f:files){
//递归
searchFile(f.getAbsolutePath());
}
}
}
}
需要注意的是递归的使用,当一个文件夹名与key匹配时,需要调用searchFile方法本身来遍历该文件夹。
public void showFile(MyList list){
//取出队列中文件名与key比较
for(int i=0;i<list.getLength();i++){
//判断文件名是否与key匹配
if(list.get2(i).contains(key)){
//追加输出
area_out.append(list.get2(i)+"\n");
}
}
if(area_out.getText().length() == 0){
area_out.setText("沒有此文件!!");
}
}
遇到的问题:1.当path为根目录时(D:\),无法搜索出结果,而在D盘下的某一文件夹下可以得到结果。
2.当path为根目录C盘时,会报空指针异常。