File类和项目

1.File类

1.1File类概述

    SUN公司提供给程序员操作文件以及文件夹对应的类。这里涉及到对于文件以及文件夹的增删改查操作

        不能操作文件内容,不能对于文件进行读写操作。IO流内容

1.2路径问题

    相对路径

    以你当前的路径为参照物

    绝对路径

    唯一明确的路径

开发中

    相对路径

    针对当前工作目录,去往其他目录最短路径,相对路径

    .当前工作目录

    ..当前工作目录的上级目录

    绝对路径

    Windows 操作系统绝对路径是从当前盘符开始,C D E F

    Linux macOS Unix 根目录 / 所有路径都是从根目录开始,后期使用的服务器软件都是采用对应方式

1.3File类构造方法

File(String pathName);

    根据指定的文件路径,或者文件夹路径,创建对应的File类对象。路径是相对路径,可以是绝对路径

File(String parent,String childName);

    根据指定的父目录文件夹路径,和子文件或者子文件夹的名字,创建对应的File类对象

File(File parent,String childName);

    根据指定的父目录File类对象,和子文件或者子文件的名字,创建对应的File类对象

【注意】

1文件名

2拓展名/后缀名/格式名

文件路径分隔符

    Windows Linux 都支持 / 作为文件分隔符

    Windows 默认采用 \ 作为文件分隔符 \\

    File.separator 根据当前操作系统,文件系统匹配文件分隔符

package com.test;

import java.io.File;

public class Demo3 {

public static void main(String[] args) {

File file1 = new File("H" + File.separator + "aaa" + File.separator + "1.txt");

File file2 = new File("H:/aaa/1.txt");

File file3 = new File("H:/aaa","1.txt");

File file4 = new File(new File("H:/aa"), "1.txt");

System.out.println(file1);

System.out.println(file2);

System.out.println(file3);

System.out.println(file4);

File file = new File(".");

System.out.println(file.getAbsolutePath());

File file5 = new File("..");

System.out.println(file5.getAbsolutePath());

}

}

1.4创建文件或者文件夹

boolean createNewFile();

    通过File类对象调用,创建File类对象中对应地址的普通文件,创建成功返回true,创建失败返回false;

    失败原因

1路径不合法,路径不存在,路径错误。

2对应文件夹没有写入权限。

D:/aaa/bb/cc/1.txt

3对应文件已经存在

4磁盘坏掉,电脑蓝屏

boolean mkdir();

通过File类对象创建,创建File类对象中对应的文件夹,创建成功返回true,返回失败false

【原因】

1路径不合法,路径不存在,路径错误

2对应文件没有写入权限

3对应文件夹已经存在

4磁盘坏掉,电脑蓝屏

boolean mkdirs();

操作很变态

创建文件夹过程中可以完成中间路径

boolean renameTo(File dest);

    通过File类对象调用,转为目标dest指定File类对象,可以操作普通文件,可以操作文件夹,移动,重命名

package com.test;

import java.io.File;

import java.io.IOException;

public class Demo4 {

public static void main(String[] args) throws IOException {

File file = new File("C:\\Users\\Administrator\\Desktop");

boolean ret = file.createNewFile();

System.out.println("createNewFile :" + ret);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\aaa");

boolean ret1 = file2.mkdir();

System.out.println("mkdir:" + ret1);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\aaa\\12\\33\44\\54");

boolean mkdirs = file3.mkdir();

System.out.println("mkdir" + mkdirs);

File file6 = new File("C:\\Users\\Administrator\\Desktop\\1.txt");

File file7 = new File("C:\\Users\\Administrator\\Desktop\\nisafha.txt");

boolean renameTo = file6.renameTo(file7);

System.out.println("renameTo :" + renameTo);

}

}

1.5删除文件或者文件夹

boolean delete();

通过File类对象调用,删除File类对象对应的文件或者文件夹

【注意】

1从磁盘中直接抹掉数据,慎用

2删除操作只针对空文件夹操作,不能删除非空文件夹

viod deleteOnExit();

    程序退出之后,删除调用该方法File类对象,对应的普通文件或者文件夹

用于缓冲文件,缓存问题,日志文件

package com.test;

import java.io.File;

import java.util.Scanner;

public class Demo5 {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\1\\1.txt");

boolean delete = file.delete();

System.out.println("delete" + delete);

File file2 = new File("C:\\Users\\Administrator\\Desktop\\1\\ccc");

boolean delete2 = file2.delete();

System.out.println("delete" + delete2);

File file3 = new File("C:\\Users\\Administrator\\Desktop\\1\\2.txt");

file3.deleteOnExit();

new Scanner(System.in).nextLine();

}

}

1.6获取文件或者文件夹数据

方法和文件或者文件夹是否存在无关

String getPath();

获取File类对象中保存路径

String getName();

获取File类对象操作对应的文件名或者文件夹名

String getParent();

获取File类对象操作文件或者文件夹的上级目录

String getAbsolutePath();

获取当前File类队象对应路径的绝对路径

String path = “C : /aaa/bbb/1.txt”;

方法1

"C:/aaa/bbb/1.txt";

方法2

"1.txt"

lastindexOf()获取/最后出现下标

subString()截取上下标之后字符串

方法3

"C:/aaa/bbb"

lastindexOf()获取/最后出现下标

subString()截取上下之前字符串

package com.test;

import java.io.File;

public class Demo6 {

public static void main(String[] args) {

File file = new File("D:/aaa/bbb/ccc/1.txt");

System.out.println(file.getPath());

System.out.println(file.getParent());

System.out.println(file.getName());

System.out.println(new File(".").getAbsolutePath());

System.out.println(new File(".").getAbsoluteFile());

}

}

1.7判断方法

boolean isFile();

判断当前File类对象对应的是不是普通文件

boolean isDirecyory();

判断当前File类对象对应的是不是文件夹

boolean exists();

判断当前File类对象对应的内容是否存在

boolean isAbsolute();

判断当前File类对象保存的路径是不是绝对路径

boolean isHidden();

判断当前File类对象对应的文件是不是一个影藏文件

package com.test;

import java.io.File;

public class Demo7 {

public static void main(String[] args) {

File file = new File("C:/Users/53431/Desktop/aaa/ccc");

System.out.println("文件是否存在" + file.exists());

System.out.println("是否是普通文件" + file.isFile());

System.out.println("是否是文件夹" + file.isDirectory());

System.out.println("是否采用绝对路径" + file.isAbsolute());

System.out.println("是否隐藏文件" + file.isHidden());

}

}

1.8文件列表法

static File[] listRoots();

获取Windows操作系统下的所有盘符

Linux中没有什么作用

String[] list();

获取File类对象对应文件夹中所有子文件或者子文件夹名字,Striing类型数组

File[] listFile();

获取File类对象对应文件夹中所有子文件或者子文件夹的File类对象数组


1.9FilenameFilter文件过滤器接口

FilenameFilter是文件名过滤器,用于File类的文件列表方法,可以控制保存在列表中的数据内容

boolean accept(File dir , String name);

dir是当前操作获取文件列表的文件夹File类对象

name是当前文件夹下的文件名户或者文件夹名

需要完成一个功能

存在一个文件夹,里面有各式各样的文件和文件夹

想得到所有的【.java文件】

endsWith

isFile

package com.test;

import java.io.File;

import java.io.FilenameFilter;

public class Demoo {

public static void main(String[] args) {

File file = new File("C:\\Users\\Administrator\\Desktop\\aaa");

String[] list = file.list(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile()&& name.endsWith(".java");

}

});

for (String string : list) {

System.out.println(string);

}

System.out.println();

File[] listFiles = file.listFiles(new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

return new File(dir, name).isFile() && name.endsWith(".java");

}

});

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。