File类
递归
过滤器
字节流
字符流
Properties集合
缓冲流
转换流
序列化流
打印流
File对象是文件和目录路径的抽象表示形式,可以使用File类对文件和文件夹进行操作。
1、File类的静态成员变量
这个分隔符存在主要是因为Windows和Linux系统的分隔符不同,使用提供的静态成员变量可以使得程序可移植性更好。
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class01_静态成员变量 {
public static void main(String[] args) {
System.out.println(File.pathSeparator);
// pathSeparator
// 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
System.out.println(File.pathSeparatorChar);
// pathSeparatorChar
// 与系统有关的路径分隔符。
System.out.println(File.separator);
// separator
// 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
System.out.println(File.separatorChar);
// separatorChar
// 与系统有关的默认名称分隔符。
}
}
2、绝对路径与相对路径
(1) 绝对路径是一个完整路径
绝对路径的标志就是盘符
(2) 相对路径是一个简化的路径
相对路径是指相对于当前项目的根目录,路径就可以简化。
3、构造方法
创建对象的路径可以存在也可以不存在,可以是文件也可以是目录。
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class02_构造方法 {
public static void main(String[] args) {
File dir=new File("E:\\IntelliJ IDEA 2019.1");
//重写了toString()方法
System.out.println(dir);
//1、File(File parent, String child)
File file1=new File(dir,"bin\\idea64.exe");
//2、File(String pathname)
File file2=new File("E:\\IntelliJ IDEA 2019.1\\bin\\idea64.exe");
//3、File(String parent, String child)
File file3=new File("E:\\IntelliJ IDEA 2019.1","bin\\idea64.exe");
//4、File(URI uri)
File file4=new File("http://localhost:8080/XiongYunFan/sendDispatcher");
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class03_获取相关方法 {
public static void main(String[] args) {
File file=new File("web\\index.jsp");
System.out.println("******************1、获取绝对路径字符串******************");
System.out.println(file.getAbsolutePath());
System.out.println("******************2、返回File对象的字符串形式******************");
String path=file.getPath();
System.out.println(path);
System.out.println("******************3、返回File对象指向的文件名或目录名******************");
System.out.println(file.getName());
System.out.println("******************4、返回File对象指向的文件字节单位大小(不能为文件夹)******************");
System.out.println(file.length());
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class04_判断相关方法 {
public static void main(String[] args) {
File file=new File("web\\index.jsp");
System.out.println("******************1、判断File对象的文件/文件夹是否存在******************");
System.out.println(file.exists());
System.out.println("******************2、判断File对象是否为文件结尾(前提是存在)******************");
System.out.println(file.isFile());
System.out.println("******************3、判断File对象是否为文件夹结尾(前提是存在)******************");
System.out.println(file.isDirectory());
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
import java.io.IOException;
public class class05_创建删除相关方法 {
public static void main(String[] args) {
File file=new File("I:\\360data\\重要数据\\桌面\\新软件.exe");
System.out.println("******************1、创建文件(不能创建文件夹且路径要存在,否则会抛异常)******************");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("******************2、删除文件或文件夹******************");
file.delete();
System.out.println("******************3、创建单级空文件夹******************");
File dir=new File("I:\\360data\\重要数据\\桌面\\中国");
if(dir.mkdir())
System.out.println("文件夹创建成功");
else
System.out.println("文件夹创建失败");
System.out.println("******************4、创建多级空文件夹******************");
File dirs=new File("I:\\360data\\重要数据\\桌面\\中国\\四川\\成都\\郫都区");
if(dirs.mkdirs())
System.out.println("文件夹创建成功");
else
System.out.println("文件夹创建失败");
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class06_遍历目录 {
public static void main(String[] args) {
File dir=new File("I:\\JavaWeb");
System.out.println("****************1、使用字符串数组****************");
String[] arr1=dir.list();
for (String value:arr1){
System.out.println(value);
}
System.out.println("****************2、使用File对象数组****************");
File[] arr2=dir.listFiles();
for (File value:arr2){
System.out.println(value.getName());
}
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class07_递归打印多级目录 {
public static void main(String[] args) {
File dir=new File("E:\\IntelliJ IDEA 2019.1");
printDirectory(dir);
}
static void printDirectory(File file){
if(file.isFile()){
System.out.println(file);
}
else if(file.isDirectory()){
System.out.println("============目录:"+file.getAbsolutePath()+"============");
File[] files=file.listFiles();
for(File value:files){
printDirectory(value);
}
}
}
}
package C6_File类与IO流.C1_File类;
import java.io.File;
public class class08_文件搜索 {
public static void main(String[] args) {
File dir=new File("E:\\IntelliJ IDEA 2019.1");
System.out.println("找出该目录下的所有exe文件");
printDirectory(dir);
}
static void printDirectory(File file){
if(file.isFile()&&file.toString().endsWith(".exe")){
System.out.println(file);
}
else if(file.isDirectory()){
File[] files=file.listFiles();
for(File value:files){
printDirectory(value);
}
}
}
}
过滤器用于过滤File对象,之前使用字符串的endswith找出指定类型的文件,可以用过滤器实现更多功能。
可以看到这两个过滤器方法是抽象方法,具体的业务功能需要我们自己编写。
package C6_File类与IO流.C3_过滤器;
import java.io.File;
import java.io.FileFilter;
public class class01_FileFilter{
public static void main(String[] args) {
File dir=new File("H:\\");
printAllFile(dir);
}
public static void printAllFile(File dir){
//传递过滤器对象
File[] files=dir.listFiles(new Test());
for (File value:files){
if(value.isDirectory()){
printAllFile(value);
}else if (value.isFile()){
System.out.println(value);
}
}
}
}
class Test implements FileFilter{
@Override
public boolean accept(File pathname) {
//如果是文件夹返沪true,继续遍历
if (pathname.isDirectory())
return true;
//如果是exe文件也返回true,继续遍历
return pathname.getName().toLowerCase().endsWith(".exe");
}
}