IO之File类
一、什么是File类?
File是指一个特定的文件夹或目录,如下所示
File file = new File("I:\\1、Spring.avi");//指向一个文件
file = new File("I:\\bb");//指向一个文件夹(目录)
二、如何创建File对象
创建File对象常用的有以下三种方式:
1、File(String pathname):通过路径名创建一个新 File 实例
File file = new File("I:\\dd\\1、Spring.avi");//通过路径名创建一个新 File 实例
System.out.println(file.getPath());//得到File对象指向的文件/文件夹指向的路径组成的字符串
2、File(File parent, String child):根据父目录路径File实例和子目录或文件路径创建一个新 File 实例
File file = new File("I:\\dd\\","1、Spring.avi");
System.out.println(file.getPath());
3、File(String parent, String child):根据父目录路径和子目录或文件路径创建一个新 File 实例
File file = new File(new File("I:\\dd\\"),"1、Spring.avi");
System.out.println(file.getPath());
三、File类常用的方法
1、boolean isFile():判断File对象 代表的路径是否是一个文件
File file = new File("I:\\dd\\1、Spring.avi");//指向一个文件
if(file.isFile()) {//是否为文件
System.out.println("Yes");
}
2、boolean isDirectory():判断File对象 代表的路径是否是一个目录
File file = new File("I:\\dd\\1、Spring.avi");//指向一个文件夹或目录
if(file.isDirectory()) {//是否为文件夹或目录
System.out.println("Yes");
}
3、String getPath()、String getName()、String getParent()、File getParenFile()
public class Test {
public static void main(String[] args) {
File file = new File("I:\\dd\\1、Spring.avi");
//String getPath():得到file对象所指向的路径
System.out.println(file.getPath());
//String getName():得到file对象所指向的路径最后一级文件/文件夹名
System.out.println(file.getName());
//String getParent():得到file对象所指向的路径的父目录
System.out.println(file.getParent());
//String getParentFile():得到file对象所指向的路径的父目录的File对象
System.out.println(file.getParentFile());
}
//打印结果:
//I:\dd\1、Spring.avi
//1、Spring.avi
//I:\dd
//I:\dd
}
4、boolean mkdir():创建此File类对象指定的目录,不包含父目录
public class Test {
public static void main(String[] args) {
if(new File("I:\\dd\\bb").mkdir()) {//创建名称为bb的文件夹,该方法只能创建以一级文件夹
System.out.println("Yes");
}
}
}
5、boolean mkdirs():创建此File类对象指定的目录,包含父目录
public class Test {
public static void main(String[] args) {
if(new File("I:\\dd\\bb\\cc").mkdirs()) {//创建名称为bb的文件夹,并在其下再创建一个名称为层次的文件夹,该方法能创建多级文件夹
System.out.println("Yes");
}
}
}
注意:boolean mkdir()、boolean mkdirs()都只能创建文件夹,不能创建目录
6、boolean createNewFile():在存在的目录下,穿件指定的文件
public class Test {
public static void main(String[] args) {
try {
if(new File("I:\\dd\\cc.txt").createNewFile()) {
System.out.println("Yes");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
7、boolean renameTo(File dest):重新命名此File对象表示的文件
public class Test {
public static void main(String[] args) {
File file = new File("I:\\ff\\bb\\cc");
if(file.renameTo( new File("I:\\ff\\bb\\dd"))){
System.out.println("Yes");
}
}
}
8、boolean delete():删除File类对象表示的目录或文件,只能删除最后一级,如果该对象表示一个目录,则该目录必须为空才能删除
public class Test {
public static void main(String[] args) {
if(new File("I:\\兴唐\\bb\\cc").delete()) {
System.out.print("Yes");
}
}
}
9、String[] list():返回由File对象对应目录所包含文件名或文件夹名组成的字符串数组;
File[] listFiles():返回由当前File对象对应目录所包含文件路径或文件夹路径组成的File类型的数组。
public class Test {
public static void main(String[] args) {
String [] names = new File("I:\\bb").list();//得到指定的目录下对应的文件或文件夹组成的字符串数组
for (String name : names) {
System.out.println(name);
}
File [] files = new File("I:\\bb").listFiles();//得到指定的目录下对应的文件或文件夹组成的File类型的数组
for (File file : files) {
System.out.println(file);
}
}
}
四、File类属性
static separator:指定文件或目录路径时使用斜线或反斜线来写,但是考虑到跨平台,斜线反斜线最好使用File类的separator属性来表示:
public class Test {
public static void main(String[] args) {
File file = new File("I:"+File.separator+"bb");
System.out.println(file.getPath());//打印结果:I:\bb
}
}