Java中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("闹着玩呢???");    }}

}

1.谬误示范1,输入的是创立文件夹 D:\filepath\test\test.txt。

public class FileTest {    public static void main(String[] args) throws IOException {        String fileName = "test.txt";        File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        if (!testFile.exists()) {            testFile.mkdirs();// 能创立多级目录        }        System.out.println("testFile:"+testFile);    }}   result--------------------testFile:D:\filepath\test\test.txt

2.谬误示范2,如果 D:\filepath\test\ 文件夹不存在,会报错。

public class FileTest {    public static void main(String[] args) throws IOException {        String fileName = "test.txt";        File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        if (!testFile.exists()) {            testFile.createNewFile();// 能创立多级目录        }        System.out.println("testFile:"+testFile);    }}

3.实现在多重目录下创立文件:话不多说上正确代码:

package com.zte.FileTest;import sun.net.ftp.FtpClient;//import com.zte.ums.cnms.pm.load.enums.MppFileDirEnum;import java.io.File;import java.io.IOException; public class FileTest {    public static void main(String[] args) throws IOException {        String fileName = "test.txt";        System.out.println("File.separator:" + File.separator);        File testFile = new File("D:" + File.separator + "filepath" + File.separator + "test" + File.separator + fileName);        File fileParent = testFile.getParentFile();//返回的是File类型,能够调用exsit()等办法         String fileParentPath = testFile.getParent();//返回的是String类型        System.out.println("fileParent:" + fileParent);        System.out.println("fileParentPath:" + fileParentPath);        if (!fileParent.exists()) {            fileParent.mkdirs();// 能创立多级目录        }        if (!testFile.exists())            testFile.createNewFile();//有门路能力创立文件        System.out.println(testFile);         String path = testFile.getPath();        String absolutePath = testFile.getAbsolutePath();//失去文件/文件夹的绝对路径        String getFileName = testFile.getName();//失去文件/文件夹的名字        System.out.println("path:"+path);        System.out.println("absolutePath:"+absolutePath);        System.out.println("getFileName:"+getFileName);    }}    result---------------------------------File.separator:\fileParent:D:\filepath\testfileParentPath:D:\filepath\testD:\filepath\test\test.txtpath:D:\filepath\test\test.txtabsolutePath:D:\filepath\test\test.txtgetFileName:test.txt

File类的常见办法(参考一位大牛的,不小心把链接关了)
1.创立。
boolean createNewFile(); //创立文件
boolean mkdir();创立文件夹
boolean mkdirs();创立多级文件夹。

2.删除。
boolean delete();
void deleteOnExit();在程序退出时删除文件。

3.判断。
boolean canExcute(); 判断是否可执行
boolean exists(); 文件事是否存在。
isFile();文件
isDirectory();文件夹
isHidden();//java能失去文件中的暗藏文件然而对暗藏文件时不能拜访的
isAbsolute();//绝对路径即时不存在也能失去。
4.获取信息。
getName();
getPath();
getParent();

4.三种文件创建形式:
**File file = new File("E:/...");//文件/文件夹门路对象
File file = new File("..." ,""...);//父目录绝对路径 + 子目录名称
File file = new File("...","...");//父目录File对象 + 子目录名称**

file.exists():判断文件/文件夹是否存在
file.delete():删除文件/文件夹
file.isDirectory():判读是否为目录
file.isFile():判读是否为文件夹
**file.mkdir():创立文件夹(仅限一级目录)
file.mkdirs():创立多及目录文件夹(包含但不限一级目录)**
file.createNewFile():创立文件
file.getAbsolutePath():失去文件/文件夹的绝对路径
file.getName():失去文件/文件夹的名字
file.String():同样是失去文件/文件夹的绝对路径等于file.getAbsolutePath()
file.getParent():失去父目录的绝对路径String 不能够调用能够调用mkdir()办法

file.getParentFile():失去父目录的绝对路径的返回值是File型能够调用mkdir()办法

String[] gdir.list():失去目录的子目录\文件的名称(不是绝对路径)
File[] dir.listFiles():失去目录的子目录\文件事是否存在。

戳我支付:Java根底材料pdf
最初的最初,为了节俭大家在网上搜寻材料的工夫来学习,也能够分享给身边好友一起学习。给文章留个小赞,就能够收费支付啦~