一.File类
文件在内存中的存储会有一级或多级目录,而File类代表一个特定的文件或者目录,并提供了若干方法对该文件或目录进行操作,以下对其中的一些常用的方法进行总结。
二.构造方法
1.File(String pathname)
File类型的对象既可以指向文件,也可以指向文件夹,调用该构造方法只需将目标文件或目标文件夹的路径传入该构造方法即可,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test");
file=new File("D:\\Test\\File.txt");
}
}
2.File(String parent, String child)
一个文件或者文件夹的路径都可以分为父目路径和子目路径,而该构造方法的用法就是传入一个父目路径参数和一个子目路径的参数:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test","File.txt");
}
}
3.File(File parent, String child)
上一个构造方法中传入的第一个参数是父目路径的字符串,而该构造方法传入的第一个参数是File类型的父目路径:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File(new File("D:\\Test"),"File.txt");
}
}
三.常用方法
1.String getName()
该方法返回此对象表示的文件或目录最后一级文件夹名称,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.txt");
System.out.println(file.getName());
File file2 = new File("D:\\Test");
System.out.println(file2.getName());
}
}
2.String getParent()
该方法返回此File类对象的父目录路径名;如果此路径名没有指定父目录,则返回 null,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.txt");
System.out.println(file.getParent());
File file2 = new File("D:\\Test");
System.out.println(file2.getParent());
}
}
要注意的是,无论是父目路径还是子目路径,都既可以是一级也可以是多级。
getParent方法还有一个衍生方法:File getParentFile(),该方法的的底层代码如下:
public File getParentFile() {
String p = this.getParent();
if (p == null) return null;
return new File(p, this.prefixLength);
}
我们可以看到它的实质是调用getParent方法得到父目路径之后用其再创建一个File类对象,所以它得到的返回值为一个File类对象;如果File对象没有父目录,则返回 null,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.txt");
System.out.println(file.getParentFile());
File file2 = new File("D:\\Test");
System.out.println(file2.getParentFile());
}
}
3.String getPath()
该方法返回File对象所表示的字符串路径,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.txt");
System.out.println(file.getPath());
File file2 = new File("D:\\Test");
System.out.println(file2.getPath());
}
}
4.boolean renameTo(File dest)
重新命名此File对象表示的文件,向方法中传入一个重命名的File类型的参数,重命名成功返回true,否则返回false,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.txt");
if(file.renameTo(new File("D:\\Test\\F.txt"))){
System.out.println("YES");
}
}
}
依照路径打开文件夹发现文件名确实修改成功了:
5.boolean mkdir()
创建此File类对象指定的目录,不包含父目录。创建成功回true,否则返回false,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File");
if(file.mkdir()){
System.out.println("YES");
}
}
}
依照路径打开文件,可以看到在Test目录中已经创建好了FIle目录。
注意:
①该方法只能创建目录不能创建文件,创建文件的方法我们稍后再说
②该方法只能创建一级目录,如果file对象中有多级目录未创建,则会因为找不到指定路径而创建失败。
如果要一次创建多级目录,则可以使用该方法:boolean mkdirs(),该方法创建传入的File对象指定的目录,包括所有必需但不存在的父目录,创建成功返回true;否则返回false。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\aa\\bb\\File");
if(file.mkdirs()){
System.out.println("YES");
}
}
}
打开该路径下的文件夹,即可得到mkdirs方法创建的多级目录:
6.boolean createNewFile()
该方法的作用是,如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false代码示例如下:
package file;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.docx");
try {
if(file.createNewFile()){
System.out.println("YES");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
打开Test文件夹,可以看到File文件已创建成功:
如果所创建文件所在目录不存在则创建失败并出现如下IOException异常:
7.boolean exists()
该方法用于判断文件或目录是否存在,代码示例如下:
package file;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.docx");
File file2= new File("D:\\Test\\aa");
if(file.exists()) {
System.out.println("YES");
}
if(file2.exists()) {
System.out.println("YES");
}
}
}
8.boolean delete()
删除File类对象表示的目录或文件,文件或目录删除成功返回true,否则false,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\File.docx");
File file2= new File("D:\\Test\\aa\\bb\\File");
if(file.delete()) {
System.out.println("YES");
}
if(file2.delete()) {
System.out.println("YES");
}
}
}
注意,如果该对象表示一个目录,则该目录必须为空才能删除。
9.boolean isFile()
该方法判断此File对象代表的路径是否是一个标准文件,只有File对代表路径存在且是一个标准文件时才返回true,否则返回false,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test\\F.txt");
if(file.isFile()) {
System.out.println("YES");
}
}
}
10.boolean isDirectory()
该方法用于判断此File对象代表的路径表示是不是目录,只有File对象代表路径存在且是一个目录时才返回true,否则返回false,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("D:\\Test");
if(file.isDirectory()) {
System.out.println("YES");
}
}
}
11.String[] list()
该方法返回由File对象对应目录所包含文件名或文件夹名组成的字符串数组,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
String [] string=new File("D:\\Test").list();
for(String str:string) {
System.out.println(str);
}
}
}
12.File[] listFiles()
返回由当前File对象对应目录所包含文件路径或文件夹路径组成的File类型的数组,代码示例如下:
package file;
import java.io.File;
public class Test {
public static void main(String[] args) {
File [] files=new File("D:\\Test").listFiles();
for(File file:files) {
System.out.println(file.getPath());
}
}
}
13.static separator
接下来说的这个不是方法,是一个属性。
在不同的操作系统中,例如Linux和Windows系统,它们的文件的路径中斜线的写法是不一样的,也就是说同样的File程序,使用“\”,则只能在Windows系统而不能在Linux系统中运行,而static separator就是用来解决这一不兼容性的。separator属性可以来表示斜线反斜线,代码示例如下:
package file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) {
File file=new File("D:"+File.separator+"Program_Files"+File.separator+"useful"+File.separator+"笔记"+File.separator+"7.25.docx");
System.out.println(file);
}
}