目录
一、引入
二、File概述
2.1、属性
2.2、构造方法
2.3、方法
2.4、代码示例
示例1
示例2
示例3
示例4
示例5
示例6
示例7
示例8
一、引入
文件是操作系统中的重要概念,Java作为一个跨平台语言,可以针对不同的操作系统处理文件。比如说windows与linux组织文件的方式是不同的,Java对不同系统的处理文件的API做了一定的封装,在jdk中提供了一个FIie类,程序员可以利用这个类来操作文件。
二、File概述
2.1、属性
修饰符及类型 | 属性 | 说明 |
static String | pathSeparetor | 依赖于系统的路径分隔符,String类型的表示 |
Static char | pathSeparetor | 依赖于系统的路径分隔符,char类型来表示 |
2.2、构造方法
签名 | 说明 |
File(File parent,String child) | 根据父目录创建一个新File实例 |
File(String pathname) | 根据文件路径创建一个新的实例,路径可以是绝对路径或者相对路径 |
File(String parent,String child) | 根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示 |
2.3、方法
修饰符及返回值类型 | 方法签名 | 说明 |
String | getParent() | 返回File对象的父目录文件路径 |
String | getName() | 返回File对象的纯文件名称 |
String | getPath() | 返回File对象的文件路径 |
String | getAbsolutePath() | 返回File对象的相对路径 |
String | getCanonicalPath() | 返回File对象的修饰过的绝对路径 |
boolean | exists() | 判断File对象描述的文件是否真实存在 |
boolean | isDirectory() | 判断File对象代表的文件是否是一个目录 |
boolean | isFile() | 判断File对象代表的文件是否是一个普通文件 |
boolean | createNewFile() | 根据File对象,自动创建一个空文件。成功创建后返回true |
boolean | delete() | 根据File对象,删除该文件,成功删除后,返回true |
void | deleteOnExit() | 根据File对象,标注文件将被删除,删除动作会到JVM运行结束时才会进行 |
String[] | list() | 返回File对象代表的目录下的所有文件名 |
File[] | listFiles() | 返回File对象代表的目录下的所有文件,以File对象表示 |
boolean | mkdir() | 创建File对象所代表的目录 |
boolean | mkdirs() | 创建File对象所代表的目录,如果有必要,会创建中间目录 |
boolean | renameTo(File name) | 进行文件改名,也可以视为我们平时的剪切、粘贴操作 |
boolean | canRead() | 判断用户是否对文件有可读权限 |
boolean | canWrite() | 判断用户是否对文件有可写权限 |
2.4、代码示例
示例1
创建文件对象
import java.io.File;/*** 常见的创建文件的不同的构造方法*/
public class Exe_02 {public static void main(String[] args) {File file=new File("D:\\study");System.out.println(file);File file1=new File(file,"document\\小黑子珍藏集");System.out.println(file1);File file2=new File("D:\\study\\document\\小黑子珍藏集");System.out.println(file2);File file3=new File("D:\\study\\document","小黑子珍藏集");System.out.println(file3);}
}
new File()文件创建方式并不要求文件是真实存在的。想要验证可以加上文件名.exists()打印出False。
示例2
打印文件路径
import java.io.File;
import java.io.IOException;/*** 文件路径*/
public class Exe_03 {public static void main(String[] args) throws IOException {System.out.println("=======用绝对路径创建文件=======");File file=new File("D:/蔡徐鸡/唱/跳/rap");//获取文件信息System.out.println(file.getPath());//文件路径System.out.println(file.getParent());//父目录文件路径System.out.println(file.getName());//纯文件名称System.out.println(file.getCanonicalFile());//修饰过的相对路径System.out.println(file.getAbsoluteFile());//绝对路径System.out.println("=======用相对路径创建文件=======");File file1=new File("./rap");//获取文件信息System.out.println(file1.getPath());//文件路径System.out.println(file1.getParent());//父目录文件路径System.out.println(file1.getName());//纯文件名称System.out.println(file1.getCanonicalFile());//修饰过的相对路径System.out.println(file1.getAbsoluteFile());//绝对路径System.out.println(file1.exists()); //文件并不是真实存在的}
}
file.getCanonicalFile():修饰过的绝对路径,获取绝对路径通常使用的方法。
示例3
文件是否存在,如果文件存在,那么就不能重复创建文件
import java.io.File;
import java.io.IOException;/***文件是否存在,如果文件存在,就不能重复创建*/
public class Exe_04 {public static void main(String[] args) throws IOException {//创建File对象File file=new File("./test.txt");//判断文件是否真实存在System.out.println("文件是否真实存在"+file.exists());//判断文件是不是一个文件System.out.println("文件是不是同一个文件"+file.isFile());//判断文件是不是同一个目录System.out.println("文件是不是同一个目录"+file.isDirectory());//创建一个真实的文件System.out.println("文件是否创建成功"+file.createNewFile());//判断文件是否真实存在System.out.println("文件是否存在--》"+file.exists());//判断文件是不是一个文件System.out.println("文件是不是一个文件"+file.isFile());//判断文件是不是一个目录System.out.println("文件是不是一个目录"+file.isDirectory());//打印文件路径System.out.println("文件绝对路径"+file.getCanonicalFile());}
}
示例4
删除文件
import java.io.File;/*** 删除文件对象*/
public class Exe_05 {public static void main(String[] args) {//创建文件对象File file=new File("./test.txt");if(file.exists()){System.out.println("删除文件"+file.delete());}}
}
示例5
创建目录
import java.io.File;//创建目录
public class Exe_06 {public static void main(String[] args) {//创建文件对象File file=new File("D:/study/小黑子");//创建目录System.out.println("创建目录"+file.mkdir());System.out.println("==============");//创建File对象File file1=new File("D:/study/小黑子/他真的很努力/iKun");//创建多级目录System.out.println("创建多级目录"+file1.mkdirs());}
}
示例6
获取文件名和目录名信息
/*** list和listFiles*/import java.io.File;
import java.util.Arrays;public class Exe_07 {public static void main(String[] args) {//创建File对象File file=new File("D:/study");//获取所有文件信息String[] list=file.list();System.out.println("文件名和目录名String类型"+ Arrays.toString(list));//获取所有文件信息File[] files=file.listFiles();System.out.println("文件名和目录名File类型"+Arrays.toString(files));}
}
示例7
文件重命名
import java.io.File;/*** 文件重命名*/
public class Exe_08 {public static void main(String[] args) {//创建两个File对象File sourceFile=new File("D:study/java/练习时长两年半");File targetFile=new File("D:study/java/你们为什么不放过他");//调用重命名方法System.out.println("文件重命名"+sourceFile.renameTo(targetFile));}
}
示例8
判断文件是否可读可写
/*** 判断文件是否可读可写*/import java.io.File;public class Exe_09 {public static void main(String[] args) {File file=new File("D:/study/小黑子/鸡哥写真集.docx");System.out.println("是否可读"+file.canRead());System.out.println("是否可写"+file.canWrite());}
}
可以将“鸡哥写真集.docx” 的属性改为只读类型
再次强调一下,File类只是Java层面的一个对象,对应的文件并不一定要在系统中存在,要区分开Java对象和系统文件的区别。
File只是对文件信息进行操作,创建,获取,删除,列表,重命名,但没有对文件内容进行操作--读取和写入(Input/Output) IO.