Loading

File与IO流之File基础

File构造方法:

public File(String pathname){}	//将字符串路径变成File对象
public File(String parent , String chlid){}//将父级路径和子级路径进行拼接
public File(File parent , String child){}

File的路径可以是不存在的

成员方法:

直接说注意点:

  1. length()只能用于判断文件大小,不能判断文件夹大小
  2. getAbsoluate()会返回文件的绝对地址,而getPath()则会返回当时定义文件的路径,不管是用的相对路径,或者是:项目名/文件名
  3. creatNewFile()只能用于创建文件,不能用于创建文件夹,如果不写后缀名会创建无后缀的文件,如果存在这个文件,返回false创建失败,但是如果没有找到对应的父路径,会报错(这个方法需要处理异常)
  4. Windows操作系统下,文件和文件夹的名称不能重复(包括后缀名)

  1. delete()方法会直接删除(不会经过回收站)

获取并遍历

listFiles获取该路径下的所有内容,并返回一个File数组

File f[]=v.listFiles();

注意点:

  1. 调用者File表示的路径不存在时,返回null
  2. 调用者File表示的是文件时,返回null
  3. 调用者File表示空文件夹,返回长度为0的数组
  4. 调用者File内的隐藏文件夹依然会被获取到

其他:

  1. public static File[] listRoots()列出可用的系统根,其实也就是CD盘。需要注意的是它返回的是File类型的数组,不能直接输出打印,需要用for循环进行循环输出

  1. public String[] list()类似于listFile()但是由于返回值是String类型,只获取名字
  2. FilenameFilter filter是个文件名过滤器,在定义中是一个函数式接口,也就是说,可以写成内部类
import java.io.*;

public class Test {
public static void main(String[] args) {
File file = new File("C:\Users\Lenovo\Desktop\WP");
String[] a = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}

  1. FileFilter的使用和上面基本一致,只是重写方法的参数不同
package Java_test;

import java.io.*;

public class Test {
public static void main(String[] args) {
File file = new File("C:\Users\Lenovo\Desktop\WP");
File[] a = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}

posted @ 2025-05-28 16:18  huidu01  阅读(14)  评论(0)    收藏  举报
; ;