File类
一 概念:
代表物理盘符中的一个文件或者文件夹
File类是文件和目录路径名(文件夹)的抽象表示
注意:File只关注文件本身的信息,而不能操作文件里面的内容
相对路径:相对于目录的路径
绝对路径:路径中包含盘符(具体路径)
二 方法:
- createNewFile()//创建一个新文件
- Mkdir()//创建一个新目录
- Delete()//删除文件或者空目录------------------如果想删除目录,只能使用while循环进行if嵌套,进行删除文件和空目录,来达到删除目录的效果
- Exists()//判断File对象所代表的对象是否存在
- getAbsolutePath()//获取文件的绝对路径
- getName()//获取名字
- getParent()//获取文件/目录所在的目录
- isDirectory()//是否是目录
- isFile()//是否是文件
- length()//获得文件的长度
- listFiles()//列出目录中的所有内容
- renameTo()//修改文件名为
//通过程序,获取已知文件的信息 public class Test{ public static void main(String[] args){ //创建file类的对象 File file =new File("D:\\HelloWorld.txt"); //输出判断 System.out.println("获取绝对路径"+file.getAbsolutePath()); System.out.println("获取文件名"+file.getName()); System.out.println("是否可读"+file.canRead()); System.out.println("是否可写"+file.canWrite()); System.out.println("是否隐藏"+file.isHidden()); System.out.println("获取文件长度字节"+file.length()); System.out.println("判断是否是文件"+file.isFile()); System.out.println("判断是否是文件夹"+file.isDirectory()); System.out.println("判断该文件是否存在"+file.exists()); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("最后修改时间"+simpleDateFormat.format(file.lastModified())); } }
/**需求3:输出指定目录下的所有文件信息(只考虑当前目录,不考虑子目录) 1)要求只输出文件后缀名为txt的文件 2)根据API的过滤器来完成该功能 3)需求继续跟进,列出当前目录及子目录中符合该条件的文件信息(递归) */ public class Test{ public static void main(String[]args){ File file=new File("D:\\"); method(file,".txt"); } public static void method(File file,String s){ //创建对象 File[] listFiles=file.listFiles(); //循环遍历 for(File f:listFiles){ if(f.isDirectory()){//判断是否是文件件 method(f,s) }else if(f.isFile){//判断是否是文件 String name=f.getName(); if(name.endsWith(s)){ System.out.println(name); } } } } }
删除目录
思路:
由于delete方法不能删除有内容的目录,只能删除文件和空文件夹
所以使用方法调用,在foreach中遍历 删除
public class Test{
public static void main(String[] args){
File file=new File("D://");
new method(file);
}
public static void method(File file){
File [] files=file.listFiles();
for(File f:files){
if(f.isDirectory()){//判断是否是文件夹
new method(f);//再次遍历子目录
f.delete();//删除空文件夹
}else if(f.isFile()){//判断是否是文件
f.delete();//删除文件
}
}
}
}
copy文件
思路:创建两个文件对象,一个为被拷贝的文件目录,一个为拷贝到那个目录下,使用方法调用,进行for循环判断是fou有该文件夹,有则进行下一步,没有则创建,再判断是否有该文件,进行拷贝
在拷贝的方法中创建高效率IO流来下载,可以达到断点下载,最后关流
public class Test{ public static void main(String[]args){ File[] sourceFile=new File("被拷贝文件的绝对路径"); File[] targetFile=new File("需要拷贝在那个路径下"); method(sourceFile,targetFile); } public static void method(File sourceFile,File targetFile){ File [] listFile=sourceFile.listFile(); for(File file:listFile){ if(file.isDirectory()){ File f=new file(targetFile,file.getName()); if(!f.extists()){ f.mkdirs(); } method(file,f); }else if(file.isFile){ copy(file,new File(targetFile,file.getName())); } } } public static void copy(File sourceFile,File targetFile){ BufferedInputStream bis=null; BufferedOutputStream bos=null; try{ bis=new BufferedInputStream(new FileInputStream(sourceFile)); bos=new BufferedOutputStream(new FileOutputStream(targetFile)); byte[] b=new byte[1024]; int len; while((len=bis.read(b))!=-1){ bos.write(b,0,len); } }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ if(bis!=null){ try{ bis.close(); }catch(IOException e){ e.printStackTrace(); } }if(bos!=null){ bos.close(); try{ bos.close(); }catch(IOException e){ e.printStackTrace(); } } } } }
三 FileFilter接口
- public interface FileFilter
- boolean accept(File pathname)
- 当调用File类中的listFiles()方法时,支持传入FileFilter接口,接口实现类,对获取文件进行过滤,只有满足条件的文件才出现在listFiles()的返回值中
四 Properties:属性集合
特点:
- 存储属性名和属性值
- 属性名和属性值都是字符串类型
- 没有泛型
- 和流有关
- 一般用于连接,如数据库的连接,类的路径等