File类
文件和目录路径名的抽象表达形式,具有平台无关性
基本分隔符
//Flie类静态成员变量
//与系统有关的路径分隔符
String separator=File.pathSeparator;
System.out.println(separator);
//与系统有关的默认名称分隔符
separator=File.separator;
System.out.println(separator);//向右\目录名称分割
路径
绝对路径:写出的路径在系统中具有唯一性,
相对路径:表示的是路径之间的相对关系。有父子目录,都是相对的路径
File三种重载形式
package File;
import java.io.File;
/*
* 将操作系统中的目录(directory)(文件夹)、文件(file)、路径(path),封装成File对象
* 提供操作方法、File与系统无关的类
*/
public class FileDome {
public static void main(String[] args) {
}
/*
* File(String parent,String child)
* 传递路径,传递字符串的父路径,字符串的子路径
*/
public static void function1(String child) {
File file = new File("",child );//好处在于可以随意的控制父子路径
}
/*
* File(String pathname)
* 传递路径名:可以写到文件夹里,可以写到一个文件
* c:\\abc c:\\abc\\Dome.java
* 将路径封装成File类型对象
*/
public static void function() {
File file=new File("E:\\千锋课程学习\\java基础视频\\day22_video");
System.out.println(file);//将路径变成file对象,对于路径是真是假,不会分辨
}
/*File(File parent,String child)
* 传递File类型父路径,String类型子路径
* 好处:父路径是File路径,父路径可以直接调用File类方法
*/
public static void function2() {
File file = new File(parent, child)
}
}
File:创建功能
/*File类的创建和删除功能
* 文件或者是目录
*
*/
public class FileDome {
public static void main(String[] args) throws IOException {
function();
}
/*
* File创建文件夹功能
* 返回值也是Boolean类型方法:mkdirs可以创建多级文件夹
* 创建的路径也在方法File构造方法中给出
* 文件夹已经存在了,将不会继续创建
*
*/
public static void function1() {
File file = new File("c:\\sbc");
System.out.println(file);//在c盘创建文件夹
}
/*
* File创建文件的功能
* Boolean createNewFile()
* 创建的文件的路径和文件名是在File类的构造方法中给出的
* 如果文件名已经存在了,就不会再继续创建
*
*/
public static void function() throws IOException{
File file = new File("C:\\a.txt");
boolean b= file.createNewFile();
System.out.println(b);
}
}
File:删除功能
File具有删除功能,且删除功能不分文件夹和文件
* 返回值类型Boolean,方法delete
* 删除的文件或者文件夹,在File构造方法中给出
*删除成功返回ture,失败返回false,并且删除的东西不可找回
public class FileDome {
public static void main(String[] args) throws IOException {
function();
}
public static void function() {
File file=new File("C:\\123");
boolean b=file.delete();
System.out.println(b);
}
}
File:获取功能
获取路径中最后部分的名字
/*返回值String 方法getName
* 返回路径中表示的文件或者文件夹名
public static void functin() {
File file = new File("C:\\asd");
String name =file.getName();
System.out.println(name);
}
返回值是long方法length()
返回路径中表示文件的字节数
可以拿到文件的字节数
public static void functin() {
File file = new File("C:\\asd");
long length=file.length();
System.out.println(length);
}
返回值是String 方法是:getAbsolutePath 获取文件的绝对路径
返回值是File类型 方法:getAbsoluteFile(推荐使用)
获取绝对路径
在eclipse环‘’境中,如果写的是一个相对路径,绝对位置是工程根目录
public static void functin() {
File file = new File("C:\\asd");
File absolute=file.getAbsoluteFile();
System.out.println(absolute);
}
获取父路径:
**返回值String,方法:getParend
返回值是File,方法:getParendFile
如果方法返回值是一个对象可以使用方法调用链父路径,父路径的父路径以此类推
public static void functin() {
File file = new File("C:\\asd");
File parent=file.getAbsoluteFile().getParentFile().getParentFile();
System.out.println(parent);
}
获取功能list和listFiles
list返回的是文件以及文件夹的名字
public static void function() {
File file = new File("d:\\asd");
String[] strArr=file.list();
System.out.println(strArr.length);
for(String str:strArr) {
System.out.println(str);
}
}
listFiles
返回值是File类型,可以调用File中的方法,用着更加便利
返回的是文件夹及文件的全路径和名字
void printDirFileAll(String dirName) {
File f = new File(dirName);
File[] file = f.listFiles();//获取到目录下的文件,将它又转换为文件对象
if(file!=null) {
for(File ftemp :file) {
if(ftemp.isDirectory()) {
printDirFileAll(ftemp.getAbsolutePath());//回调,进入一层层目录
}else {
System.out.println(ftemp.getAbsolutePath());//打印文件的绝对路径
}
}
}
}
File判断功能
返回值Boolean,方法exists
判断File构造方法中封装路径是否存在
存在返回ture
public static void functin() {
File file = new File("C:\\asd");
boolean b=file.exists();
System.out.println(b);
}
返回值Boolean,方法:isDirectory
判断File构造方法中封装的路径是不是文件夹
public static void functin() {
File file = new File("C:\\asd");
if(file.exists()) {//p判断文件是不是存在
boolean b=file.isDirectory();
System.out.println(b);
}
}
递归算法查看文件
打印TXT文件的绝对路径,运用递归算法
static int i=0;
void findDirFileAll(String desName) {
File f = new File(desName);
File[] file = f.listFiles();//获取到目录下的文件,将它又转换为文件对象
if(file!=null) {
for(File ftemp :file) {
if(ftemp.isDirectory()) {
findDirFileAll(ftemp.getAbsolutePath());//回调,进入一层层目录
}else {
if(ftemp.getName().endsWith(".md")) {
i++;
System.out.println(ftemp.getName());//打印.txt后缀的所有文件的绝对路径
}
}
}
}
}
File 文件过滤器
方法:listFiles
遍历目录的时候可以根据需要,只获得满足条件的文件
遍历目录方法listFiles()重载形式
listFiles(FileFilter filter)接口形式
传递FileFilter接口的实现类,必须自定义接口实现类,重写抽象方法
最终接口实现类对象传递到遍历方法listFiles
public class FileDome {
public static void main(String[] args){
File file =new File("c:\\ffff");
File[] fileArr=file.listFiles(new MyFilter());
}
}
/*
* 自定义过滤器,实现FileFilter接口,重写抽象方法
*/
class MyFilter implements FileFilter{
public boolean accept(File pathname) {
/*pathname接受到的也是文件全路径
* c:\\ffff
* 对路径进行判断,如果是java文件,返回true否则返回false
* 判断依据:后缀名.java
*/
//String name = pathname.getName();//判断后缀是不是.java
return pathname.getName().endsWith(".java");
}
}
过滤器工作原理:accept方法接收到参数pathname,参数是listFiles传递过来的,在accept方法中进行判断,是不是java文件,是的话返回true,经过listFiles保存到数组File中,否则返回false