package HuiXin;

import java.io.File;
import java.io.IOException;

public class Test {
public static void main(String[] args) throws IOException {
File file= new File("D:"+File.separator+"huixi"+File.separator+"LivelyWallPaper");
File file1= new File("D:/HuiXin.doc");

if (!file1.exists()){
file1.createNewFile();
}
System.out.println("文件是否可执行--"+file.canExecute());
System.out.println("文件绝对路径--"+file.getAbsolutePath());
System.out.println("文件相对路径--"+file.getPath());

System.out.println("文件是否可读--"+file.canRead());
System.out.println("文件是否可写--"+file.canWrite());
System.out.println("文件地址比较--"+file.compareTo(file1));
System.out.println("文件绝对文件--"+file.getAbsoluteFile());
File file2= new File("D:/Study.doc");
System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能
System.out.println("文件名--"+file.getName());
System.out.println("------------"+file.getCanonicalPath());
System.out.println(file.getCanonicalFile());
System.out.println("文件根目录--"+file.getParent()+"返回值为String");
System.out.println("文件的上级目录--"+file.getParentFile()+"返回值为File类的实例");

System.out.println("文件是否是一个目录--"+file.isDirectory());

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

System.out.println(file.getTotalSpace());//如果是文件,则返回0
File file3 = new File("C:");
System.out.println("盘符剩余空间--"+file3.getFreeSpace());//抽象路径名表示的剩余空间大小
System.out.println("盘符总空间--"+file3.getTotalSpace());//抽象路径名表示的分区的总大小,
System.out.println("盘符未分配空间--"+file3.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,

}
}

小细点—

1. 带扩展名与不带的区别,
但是最终都反应的是所在盘符的空间状态;//当文件或者路径不存在时返回0L

File f= new File("D:\\Study.doc");
File file3 = new File("C:");

System.out.println("盘符剩余空间--"+file3.getFreeSpace());//抽象路径名表示的剩余空间大小
System.out.println("盘符总空间--"+file3.getTotalSpace());//抽象路径名表示的分区的总大小,
System.out.println("盘符未分配空间--"+file3.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,
System.out.println("盘符剩余空间--"+f.getFreeSpace());//抽象路径名表示的剩余空间大小
System.out.println("盘符总空间--"+f.getTotalSpace());//抽象路径名表示的分区的总大小,
System.out.println("盘符未分配空间--"+f.getUsableSpace());//抽象路径名表示的分区的未分配的总大小,

JAVA中的IO流的那些事----File类中常用的方法解析_盘符

细节区别—

写全扩展名与没写全的区别

文件没写全扩展名且目录下又没有该文件夹–

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_02


如果写全了扩展名

结果如下----

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_03

2,获得绝对路径和相对路径的区别–

File file4= new File("AQ.ppt");
System.out.println("当前File对象的绝对路径名的字符串---"+file4.getAbsolutePath());
System.out.println("当前File对象的绝对路径名File实例---"+file4.getAbsoluteFile());
System.out.println("当前File对象的相对路径名的字符串---"+file4.getPath());

JAVA中的IO流的那些事----File类中常用的方法解析_System_04

3,getParent()与getParentFile()的区别

返回值类型不同–但是输出值一样,因为输出是调用了toString()
public String getParent() {//返回值类型为String

public File getParentFile() {//返回值类型为File

4,getCanonicalPath()与getCanonicalFile()区别

System.out.println("文件规范路径--"+file.getCanonicalPath());//String
System.out.println("文件规范路径--"+file.getCanonicalFile());//File

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_05


区别也是返回值不一样;

5,renameTo()方法的应用

需要两个File实例—

对于文件—扩展名一样(如果不带扩展名,jvm视为文件夹名)

File file1= new File("D:/HuiXin.doc");
File file2= new File("D:/Study.doc");
System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

如果文件路径一样----

JAVA中的IO流的那些事----File类中常用的方法解析_其他_06


对于文件夹–

File file1= new File("D:/HuiXin");
File file2= new File("D:/Study");
System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_07


如果文件路径不一样,可以实现文件的剪切或者剪切后的重命名

File file1= new File("D:/Study.doc");
File file2= new File("D:/Study/DayDayUp.doc");
System.out.println("文件重命名--"+file1.renameTo(file2));//可以实现好几种功能

JAVA中的IO流的那些事----File类中常用的方法解析_intellij-idea_08

6,list()与listFiles()的区别

先看代码–

import java.io.File;
import java.io.IOException;

public class Test {
public static void main(String[] args) throws IOException {
File file1= new File("D:\\Program Files");
String[] list = file1.list();
for (String s : list) {
System.out.println(s);
}
System.out.println("-------------分割线----------------");
File[] files = file1.listFiles();
for (File file : files) {
System.out.println(file);
}

}
}

JAVA中的IO流的那些事----File类中常用的方法解析_intellij-idea_09

public String[] list() {//返回String[]

public File[] listFiles() {//返回File[]
由方法返回值以及输出结果可以看出返回值不一样,结果–一个不带路径,一个带路径

list以及listFiles还有其他方法–带参数

JAVA中的IO流的那些事----File类中常用的方法解析_System_10


再来看带参数的方法–

list(FilenameFilter fileter)
@FunctionalInterface
public interface FilenameFilter {//一个功能接口

通过方法名–文件名过滤–实代码

package HuiXin;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class Test {
public static void main(String[] args) throws IOException {
File file1 = new File("C:\\Program Files\\XMind ZEN");
String[] list = file1.list();
for (String s : list) {
System.out.println(s);
}
System.out.println("-------------过滤之后的----------------");

FilenameFilter filenameFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
String filename = name.toLowerCase();
if (filename.endsWith(".dll")) {
if (filename.startsWith("d")|filename.startsWith("f")) {
return true;
}
}
return false;
}
};
String[] list1 = file1.list(filenameFilter);
for (String s : list1) {
System.out.println(s);
}
}
}

过滤之后的结果如下–

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_11


listFiles(FilenameFilter fileter)

public File[] listFiles(FilenameFilter filter) {//返回值为File[]

File[] files = file1.listFiles(filenameFilter);
for (File file : files) {
System.out.println(file);
}

JAVA中的IO流的那些事----File类中常用的方法解析_intellij-idea_12

listFiles( FileFilter fileFilter)

package setTest;

import java.io.File;
import java.io.FileFilter;


public class Test {
public static void main(String[] args) {
File file1 = new File("C:\\Program Files\\XMind ZEN");
String[] list = file1.list();
for (String s:list
) {
System.out.println(s);
if(s.equals("XMind ZEN.exe")){
System.out.println("-------------过滤之后的----------------");
}
}
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
boolean flag=pathname.getName().toLowerCase().endsWith("exe");
return flag ;
}
};

File[] listFiles = file1.listFiles(fileFilter);
for (File listFile : listFiles) {
System.out.println(listFile);
}

}
}

JAVA中的IO流的那些事----File类中常用的方法解析_System_13


7,mkdir()与mkdirs()的区别

File file1 = new File("C:\\D\\E\\F");
boolean mkdir = file1.mkdir();
System.out.println(mkdir);

JAVA中的IO流的那些事----File类中常用的方法解析_其他_14

File file1 = new File("C:\\D");
boolean mkdir = file1.mkdir();
System.out.println(mkdir);
File file = new File("C:\\DD\\EE\\FF");
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);

JAVA中的IO流的那些事----File类中常用的方法解析_java_15

区别----
mkdir()是创建单目录的,mkdirs()是创建多级目录的;

看一下源码–返回值不一样

JAVA中的IO流的那些事----File类中常用的方法解析_intellij-idea_16


接下来回顾一下dos中的命令mkdir

JAVA中的IO流的那些事----File类中常用的方法解析_其他_17


删除–

JAVA中的IO流的那些事----File类中常用的方法解析_其他_18

JAVA中的IO流的那些事----File类中常用的方法解析_盘符_19