JavaSE--------基础知识点16File类文件

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:属性集合

特点:

  • 存储属性名和属性值
  • 属性名和属性值都是字符串类型
  • 没有泛型
  • 和流有关
  • 一般用于连接,如数据库的连接,类的路径等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榮十一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值