Java基础—File类和Properties

第一讲 File类

一 概述

  1. File类:文件和目录路径名的抽象表现形式

  2. 特点和作用:

    1)用来将文件或文件夹封装成对象

    2)方便于对文件与文件夹的属性信息进行操作

    3)File类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变

    4)File对象可以作为参数传递给流的构造函数

二 File对象构建

  1. File f =new File(String pathname)    

    根据一个路径得到File对象

  2. File f =new File(String parent, String child)

    根据一个目录和一个子文件/目录得到File对象

  3. File f =new File(File parent,String child)

    根据一个父File对象和一个子文件/目录得到File对象

三 File类常用功能

  A. 创建功能

    public boolean createNewFile()  :创建文件 如果存在这样的文件,就不创建了且返回false

    public boolean mkdir(): 创建文件夹 如果存在这样的文件夹,就不创建了且返回false

    public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来且返回false

    注意:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

  B. 重命名和删除功能

    public boolean renameTo(File dest):  File1.renameTo(File2)  

      如果File1和File2路径相同,将File1文件名改为File2的文件名。如果路径不同就是剪切

    public boolean delete():   删除文件或者文件夹,返回是否操作成功

      注意:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,否则不能操作成功

      且删除功能不走回收站,直接没了

  C. 判断功能

    * public boolean isDirectory(): 判断是否是目录

    * public boolean isFile():判断是否是文件

    * public boolean exists():判断是否存在

    * public boolean canRead():判断是否可读,windows下认为所有文件都可读

    * public boolean canWrite():判断是否可写

      windows下可以通过File.setWriteable(false)设置为不可读,那么不可通过IO流写文件

    * public boolean isHidden():判断是否隐藏

    * boolean isAbsolute() : 判断文件是否是绝对路径

  D. 获取功能

    * public String getAbsolutePath():获取绝对路径

    * public String getPath():获取构造方法中的路径

    * public String getName():获取文件名,如果是目录,则返回null

    * public long length():获取长度。字节数

    * public String getParent(): 获取父目录

    * public long lastModified():获取最后一次的修改时间,毫秒值

    * public String[] list():获取指定目录下的所有文件或者文件夹的名称数组

    * public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

四 列出文件与文件过滤

  String[] list()  获取所有文件

  String[]list(FilenameFilter filter): 返回一个字符串数组,获取目录中满足指定过滤器的文件或目录

  File[] listFiles() :  返回一个File对象数组,获取当前文件夹下的所有文件和文件夹

  File[] ListFiles(FilenameFilterfilter): 返回File对象数组,获取目录中满足指定过滤器的文件或目录

  例子1:判断F盘下是否有txt文件,如果有直接输出
    方法1:利用File.listFiles()得到所有文件对象,循环判断

 

File f = new File("F:/");
File[] subFiles= f.listFiles();
for(File subFile:subFiles){
     if(subFile.isFile()&&subFile.getName().endsWith(".txt")){
          System.out.println(subFile);
     }
}

 

    方法2:利用File[] ListFiles(FilenameFilterfilter) ,加过滤器判断

 

 

File f = new File("F:/");
File[] subFiles= f.listFiles(new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        File file = new File(dir, name);
        return file.isFile()&&file.getName().endsWith(".txt");
    }
});
for(File subFile: subFiles){
    System.out.println(subFile);
}

  但是有一个问题是只能判断该目录下的是否包含txt文件,如果该目录下又包含其他目录

  则不能判断其他目录下是否包含txt文件,所以我们需要用循环

  例子升级版:判断目录下是否包含txt文件,包含子目录的判断

 

    public static void main(String[] args) {
        File dir = new File("F:/");
        allFileSearch(dir);
    }
    
    public static void allFileSearch(File dir){
        File[] subFiles = dir.listFiles(); // 得到所有子文件,包含文件和路径
        for(File subFile: subFiles){ //遍历
            if(subFile.isDirectory()){// 是目录,递归查找
                allFileSearch(subFile);
            }else{ // 是文件,判断直接输出
                if(subFile.getName().endsWith(".txt")){
                    System.out.println(subFile);
                }
            }
        }
    }

 

第二讲  Properties类

 

一 什么是Properties?

  Properties是HashTable的一个争气的子类,与Map一样是一个双列集合,常作为配置文件,如连接数据库的配置文件等

  * Properties 类表示了一个持久的属性集。

  * Properties 可保存在流中或从流中加载。

  * 属性列表中每个键及其对应值都是一个字符串。

二 Properties的使用

  1. public Object setProperty(String key,String value)  

  2. public String getProperty(String key)

  3. public Enumeration<String> stringPropertyNames()

  重要功能: load(InputStream inStream)store(OutputStream out, String comments)

  从输入流中读取属性列表(键和元素对)和适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。

   

 

 

     

  

 

 

 

    

转载于:https://www.cnblogs.com/chenjinsen/p/5301085.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值