java基础(jdk1.8)
**
文件IO——File类
**
文件IO是Java对操作系统上文件进行操作的一个类,使用这个来对文件进行操作
文件IO的所有类都在java.io这个包下,因此需要导入io包才能操作
File类
java.io.File
* 将操作系统中的,文件,目录(文件夹),路径,封装成File对象
* 提供方法,操作系统中的内容
* File与系统无关的类
* 文件 file
* 目录 directory
* 路径 path
File类静态的成员变量
pathSeparator:与系统有关的路径分隔符(String)
separator:与系统有关的默认名称分隔符(String)
File类构造方法
绝对路径:绝对路径是一个固定的路径,从盘符开始
相对路径:相对于某个位置 //根据父子目录定位
父目录:文件上一层文件路径(唯一)
子目录:下层文件路径(不唯一)
File(String)
/**
* 传入绝对路径
* File构造并无FileNotFoundException,
* 因此这个文件可存在可不存在
* 绝对路径可传文件夹也可传文件
*/
File file = new File("d:\\a.txt");
//第一个\为转义字符,第二个为操作系统默认分隔符
File(String,String)
/**
* 传入相对路径
* 第一个String为父目录
* 第二个String为子目录
*/
File file = new File("d:","java");
File(File,String)
/**
* 传入相对路径
* 第一个File为父目录
* 第二个String为子目录
*/
File parent = new File("d:");
File file = new File(parent,"java");
File类方法
创建文件
- createNewFile()
//创建文件,不会创建文件夹,已有则不会创建
File file = new File("d:\\a.txt");
file.createNewFile();//返回boolean类型
创建文件夹
-
mkdir()
-
mkdirs()
/*
* 创建文件夹,已有则不会创建
* 使用mkdirs() 可创建多层文件夹(推荐使用)
*/
File file = new File("d:\\新建文件夹");
file.mkdir();//返回boolean类型
file = new File("d:\\新建文件夹\\a\\b");
file.mkdirs();
删除
- delete()
//删除文件夹或者文件
File file = new File("d:\\a.txt");
file.delete();//返回boolean类型
查找/获取
-
getName() //拿到文件或文件名字符串
-
getPath() //和toString一样
-
length() //获取文件字节数 (long型,文件夹无)
-
getAbsolutePath() getAbsoluteFile() //获取文件绝对路径 返回Sting返回File
-
getParent() getParentFile() //获取文件父路径 返回Sting返回File
扩展:
- list()
//遍历一个目录(文件夹),返回String []
//只有名字
File file = new File("d:\\");
String [] arr = file.list();
for (String str : arr)
{
System.out.println(str);
}
-
listFiles() //遍历一个目录(文件夹) 返回File[] 全路径名
-
static listRoots() //遍历系统跟目录 返回File[]
判断
-
exists() //判断file(文件或文件夹)是否存在
-
isDirectory() //判断file是否为目录(文件夹)
-
isFile() //判断file是否为文件
文件过滤
使用listFiles的重载方法
- listFiles(FileFilter)
import java.io.*;
public class FileCheck {
/**
* listFiles(FileFilter filefilter)
* 1、传入FileFilter接口的实现类对象
* 2、每拿一个file后将其作为参数传入重新的accept方法
* 3、使用accept实现对文件的过滤
*///遍历file下txt文件 ,只有file下,无子文件下
static void printTxtNo_1(File dir) {
File [] files = dir.listFiles(new MyFilter());
for (File f : files)
{
System.out.println(f);
}
}
//遍历file下所有txt文件,包括所有子目录的
static void printTxtNo_2(File dir){
File [] files = dir.listFiles();
for (File f : files)
{
if (f.isDirectory())
{
printTxtNo_2(f);
}
//toLowerCase()将其都转为小写
else if (f.getName().toLowerCase()
.endsWith(".txt"))
{
System.out.println(f);
}
}
}
}
class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
//pathname为全路径名,先拿到文件名,然后判断其是否为txt文件
return pathname.getName().endsWith(".txt");
}
}
有兴趣的关注我的公众号,一起学习交流啊
下一篇 》IO流对象