是java.io包中唯一代表磁盘文件本身对象。File类定义了一些与平台无关的方法来操作文件,也可以通过调用File类中的方法来实现创建,删除,重命名文件等操作;File类的对象主要用来获取文件本身的一些信息;如文件所在的目录,文件的长度,文件的读写权限等;数据流可以将数据写入到文件中,文件也是数据流最长用的数据媒体;
可以使用File类创建一个文件对象、通常有3种构造方法来创建文件对象。
1.File(String pathname)
该构造方法通过给定路径名字符串转换为抽象路径名来创建一个File实例;
New File(String pathname)
其中,pathname指路径名称(包含文件名)。例如:
File file = new File("d:/1.txt");
2.File(String parent,String child)
该构造方法根据定义父路径和子路径(包含文件名)来创建一个新的File对象;
语法如下:
new File(String parent,String child);
parent:父路径字符串,例如,D:/或者D:/doc.
child:子路径字符串。例如,letter.txt.
3File(File f,String child)
f:父路径对象,例如,D:/doc/。
child:子路径对象,例如,letter.txt。
对于Microsoft Windows平台,包含盘符路径名前缀由驱动号和一个:组成;如果路径是绝对路径,还可能后面跟\;当使用一个File类创建一个文件对象后,例如:
File file = new File("word.txt");
如果当前目录中不存在名称为word的文件,File对象还可通过调用createNewFile()方法创建一个名为word.txt的文件;如果存在word.txt文件,可以通过调用delete()方法将其删除;如图所示;
在项目中创建FileTest,在主方法中判断D盘中myword文件夹是否存在word.txt文件,如果存在,将其删除,如果不存在,创建该文件;
public class Test4 {
public static void main(String[] args){
File file = new File("word.txt");
if (!file.exists()){
try {
file.createNewFile();
System.out.println("文件已经创建");
} catch (IOException e) {
e.printStackTrace();
}
}else {
file.getAbsolutePath();
System.out.println(file.getAbsolutePath());
file.delete();
System.out.println("文件已删除");
}
}
}
这里原来不知道下载文件的位置,只好用getAbsolutePath()获取其绝对路径;后来发现word.txt文件在项目根目录下面;
获取文件信息的方法(常用)如下:
String getName():获取文件名称;
boolean canRead():判断文件是否可读;
boolean canWrite():判断文件是否可以被写入;
boolean exist():判断文件是否存在;
long length():获取文件的长度(以字节为单位);
String getAbsolutePath():获取文件的绝对路径;
String getParent():获取文件的父路径;
boolean isFile():判断文件是否存在,是否是一个文件;
boolean isDirectory():判断文件/夹 是否是文件夹;
boolean isHidden():判断文件是否是隐藏文件;
long lastModified():判断文件最后的修改时间;
package test;
import java.io.File;
import java.io.IOException;
/**
* Created by Administrator on 2017/8/2 0002.
*/
public class FileTest {
public static void main(String[] args) {
File file = new File("word.txt");
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
String name=file.getName();
System.out.println("name:"+name);
Boolean read = file.canRead();
System.out.println("canRead?:"+read);
Boolean write = file.canWrite();
System.out.println("canWrite?:"+write);
Boolean exist = file.exists();
System.out.println("exist?:"+exist);
Long lengths = file.length();
System.out.println("文件的长度:"+lengths);
String path = file.getAbsolutePath();
System.out.println("文件的路径:"+path);
String parentPath = file.getParent();
System.out.println("文件的父路径:"+parentPath);
Boolean isfile = file.isFile();
System.out.println("是否是文件?:"+isfile);
Boolean isDirectory = file.isDirectory();
System.out.println("是否是文件夹?:"+isDirectory);
Boolean isHidden = file.isHidden();
System.out.println("是否是隐藏文件/夹?:"+isHidden);
Long lastModified = file.lastModified();
System.out.println("最后修改时间:"+lastModified);
file.delete();
file.canExecute();//是否可以执行
System.out.println("是否可以执行"+file.canExecute());
file.compareTo(new File("world.txt"));
file.deleteOnExit();//当存在时删除
file.equals("world.txt");//是否相等
file.getFreeSpace();//获取空余空间
file.getParentFile();//获取父文件夹
file.renameTo(new File("words.txt"));//重命名;
}
}
}
这里需要注意:
①看结果的截图,文件的父路径没有,说明,这个路径是整个:E:\projects\fxrj\fxrj-admin\word.txt;而不是word.txt;
②这里最后的修改时间是Long类型的,所示不是可视化可理解的;需要时间类型转换;