File文件的一些基本方法和操作

1.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。

2.File.separator: 连接符
public static final String separator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 该字符串包含一个字符,即separatorChar 。 (public static final char separatorChar与系统相关的默认名称分隔符。 该字段被初始化为包含系统属性值file.separator的第一个file.separator 。 在UNIX系统上,该字段的值为’/’ ; 在Microsoft Windows系统上是’\’ 。 )

3.创建File实例对象的几种方式
第一种:

    File file = new File("D:\\abc.txt");
    System.out.println(file);

第二种:

// parent  前面的路径   chid  在parent 后面追加的目录
        File file2 = new File("D:\\c", "abc.txt");
        System.out.println(file2);

第三种:

       File  parent = new File("D:\\d");
        File file3 = new  File(parent, "qwe.doc");
        System.out.println(file3);

4.创建文件

//返回的是否创建成功
    try {
            boolean flag = file.createNewFile();
            System.out.println(flag);
        } catch (IOException e) {
            e.printStackTrace();
        }

5.判断文件是否可读写canRead() canWrite()

        System.out.println(file.canRead());
        // 判断文件是否可写
        System.out.println(file.canWrite());

6 . 判断文件是否存在exists(), 如果不存在则 创建, 存在则不创建了

if(!file2.exists()){// 判断文件是否存在
            try {
                file2.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else{
            System.out.println("已经存在了 ");
        }

7 .创建文件夹 单层mkdir()

        String string = "D:\\d";
        File file = new File(string);
        boolean flag = file.mkdir();// 创建文件夹  单层
        System.out.println(flag);

8 .利用mkdirs 可以同时创建多层目录

File file2 = new File("D:\\d\\a\\c\\w");
        file2.mkdirs();// 利用mkdirs 可以同时创建多层目录

9 . 如何区分 文件或者是 文件夹

      if(file2.isDirectory()){// 判断是否是文件夹
            System.out.println("是文件夹");
        }
        if(file3.isFile()){
            System.out.println("是文件");
        }

10 . 删除指定文件

        File file2 = new File("D:\\d\\a\\c\\w");    
        File file3 = new File(file2, "abc.txt");
        boolean flag2 = file3.delete();
        System.out.println(flag2);

11 .length()判断文件的长度 而非文件夹的长度 ,返回long类型的

        long l = file3.length();
        System.out.println(l);

12 .得到路径

File file = new File("D:\\d\\a\\c\\w\\abc.txt");
        System.out.println(file.getPath());// 得到路径

13 .System.out.println(file.getParent());// 得到 文件的父目录

14 . System.out.println(file.getParentFile());// 得到 文件的父目录 返回的是File对象

15 .// 重命名 被其他 占用的时候 就不能重命名成功

    File file3 = new File("D:\\d\\a\\c\\w\\hehe.txt");
        boolean flag = file.renameTo(file3);
        System.out.println(flag);

16.将文件过滤掉,文件夹保留

package com.qf.demo2;

import java.io.File;
import java.io.FilenameFilter;

/**
 * list()  返回 指定目录  下的   所有 的  目录和文件的名字   String[]
 * list(FilenameFilter filter)  得到的所有的名字 进行对应的过滤
 * 
 * 
 * 
 * listFiles()   返回 指定目录  下的   所有 的  目录和文件的   file 对象表现形式  File[]
 * listFiles(FilenameFilter filter)  得到的所有的名字 进行对应的过滤
 * 
 */
public class Test4 {

    public static void main(String[] args) {

        //File file = new  File("D\\java上课内容\\2015新版PPT":);
        File file = new File("D:\\java上课内容");
        String[] strings = file.list();
        /*for (String string : strings) {
            System.out.println(string);
        }
        File[] files = file.listFiles();
        for (File file2 : files) {
            System.out.println(file2);
        }*/


        String[] strings2 = file.list(new MyFilter());
        for (String string : strings2) {
            System.out.println(string);
        }

        File[] file2 = file.listFiles(new MyFilter());
        for (File file3 : file2) {
            System.out.println(file3);
        }

    }
}

class MyFilter implements FilenameFilter{

    // dir 指定的目录        name 是 dir 指定目录下的文件或者是文件夹的名字
    public boolean accept(File dir, String name) {      
//      if(name.endsWith(".txt")){
//          return false;
//      }
        // 假如是  文件   就 过滤掉, 如果是文件夹 , 就保留
        //  D:\\java上课内容      \\   java新版ppt
        File file = new File(dir,name);
        if(file.isFile()){
            return false;
        }


        return true;// 返回ture 证明 保留下来的
                    // 返回 false 要被过滤掉的
    }

}

17 .得到指定文件夹下的所有的文件

package com.qf.demo2;

import java.io.File;

/**
 * 递归
 * 自己调用自己
 * 以此类推
 * 同性质的问题  范围缩小, 直到 结果 可以直接的出来

 需求: 得到指定文件夹下的所有的文件


计算 指定文件夹  所有文件 和 文件夹的个数

 */
public class Test5 {

    public static void main(String[] args) {

        findFile(new File("D:\\java上课内容"));
    }

    // 得到 指定文件夹下一层的所有的文件和文件
    // // 如果是文件  打印输出, 如果文件夹 

    public static void  findFile(File file){// 既可以代表文件也可以代表文件夹
        // 保证非空
        if(file != null){
            // 保证是文件夹
            if(!file.isFile()){
                // 得到文件夹下的文件或者是 文件夹了
                File[] files = file.listFiles();// 新版ppt  ppt  .pptx
                for (File file2 : files) {// 把所有的文件和文件夹遍历一遍
                        findFile(file2);// 无论是文件还是文件夹 都可以调用  此方法
                }
            }else{
                System.out.println(file);
            }
        }else{
            System.out.println("闹着玩呢??????");
        }
    }
}
  • 5
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值