File类概述
Java.io.File类
文件和目录路径名的抽象表示形式
java把电脑中的文件和文件夹(目录)封装成了一个File类,我们可以使用File类对文件和文件夹进行操作
我们可以使用File类的方法
*创建一个文件/文件夹
*删除创建一个文件/文件夹
*获取一个文件/文件夹
*判断一个文件/文件夹
*对文件夹进行遍历
*获取文件的大小
*File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法
1.分隔符
public class Demo01File {
public static void main(String[] args) {
String pathSeparator = File.pathSeparator;//路径分割符
System.out.println(pathSeparator);
String separator = File.separator;//文件名分隔符
System.out.println(separator);
}
}
因为不同系统的分隔符不同,所以路径不能写死了,如:
C:\develop\a.txt windows
C:/develop/a.txt Linux
要写成 “C:”+File.separator+“develop”+File.separator+“a.txt”
File类构造方法
File(String pathname):通过将给定路径名称的字符转换为抽象路径名称来创建一个File实例
参数:
String pathname:字符串的路径名称
路径可以是文件结尾,也可以是文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以是存在的,也可以是不存在的
创建File对象,只是把子封装为File对象不考虑路径的真假情况
private static void show01() {
File f1=new File("F:\\IdeaProjects\\baisc-codeII\\a.txt");
System.out.println(f1);//重写了object类中的toString方法
File f2=new File("F:\\IdeaProjects\\baisc-codeII");
System.out.println(f2);
File f3=new File("b.txt");
System.out.println(f3);
}
File(String parent,String child) :根据parent路径名字符串和child路径名字符串创建一个新File实例
参数:把路径分成了两部分父路径和子路径,自动填上分隔符
好处:父路径和子路径可以单独书写,而且父路径和子路径可以变化
private static void show02(String parent,String child) {
File file=new File(parent,child);
System.out.println(file);
}
show02("c:","a.txt");//c:\a.txt
show02("d:","a.txt");//d:\a.txt
File(File parent,String child)
注意数据类型变了
好处:
1.父路径和子路径可以单独书写,而且父路径和子路径可以变化
2.父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象
private static void show03() {
File parent=new File("c:\\");
File file=new File(parent,"Hello.java");
System.out.println(file);//c:\Hello.java
}
3.几个获取方法
show01();//getAbsolutePath()
show02();//getPath()
show03();//getName()
show04();//length()
private static void show04() {//getLength()返回文件大小,字节为单位,如果文件不存在,返回0
File f1=new File("G:\\自学java\\java笔记");
System.out.println(f1.length());//12680
File f2=new File("G:\\作业");
System.out.println(f2.length());//文件夹,返回0
}
private static void show03() {
File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\a.txt");
System.out.println(f1.getName());//a.txt
File f2 = new File("F:\\IdeaProjects\\baisc-codeII");
System.out.println(f2.getName());//baisc-codeII
}
private static void show02() {//路径是什么,就返回什么
File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
System.out.println(f1.getPath());
File f2 = new File("a.txt");
System.out.println(f2.getPath());
System.out.println(f2.toString());//实际上重写toString就是调用了getPath方法
}
private static void show01() {//获取构造方法中传递的路径,返回绝对路径
File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
System.out.println(f1.getAbsolutePath());
File f2 = new File("a.txt");
System.out.println(f2.getAbsolutePath());
}
}
4.几个判断方法
isDirectory()判断是否是目录 exists()判断路径是否存在 isFile()判断是否是文件
private static void show02() {
File f1 = new File("F:\\IdeaProjects\\baisc-codeII");
System.out.println(f1.exists());//true
System.out.println(f1.isDirectory());//true
System.out.println(f1.isFile());//false
File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\.idea\\misc.xml");
System.out.println(f2.exists());//true
System.out.println(f2.isDirectory());//false
System.out.println(f2.isFile());//true
File f3 = new File("F:\\IdeaProjects\\baisc-codeII\\.idea\\nkasng");
System.out.println(f3.exists());//false
System.out.println(f3.isDirectory());//false
System.out.println(f3.isFile());//false
}
5.创建与删除文件或目录
createNewFile();
true:文件夹不存在,创建文件夹,返回true
false:文件夹存在,返回false
路径错误:抛出异常
private static void show01() {
File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\1.txt");//相对绝对都行
boolean b1 = false;
try {
b1 = f1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(b1);
}
mkdir()创建单级文件夹,mkdirs()既可以单级,也可以多级
true:文件夹不存在,创建文件夹,返回true
false:文件夹存在,路径错误,返回false
private static void show02() {
File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹");
System.out.println(f1.mkdir());
File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11\\文件夹111");
System.out.println(f2.mkdirs());//这种多级的要用mkdirs
}
delete()删除文件或文件夹
true:删除成功
false:文件夹中有内容,不会删除返回false;路径错误,返回false
delete()直接在硬盘删除,不走回收站
private static void show03() {
File f1 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1");
System.out.println(f1.delete());
File f2 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11");
System.out.println(f2.delete());
File f3 = new File("F:\\IdeaProjects\\baisc-codeII\\文件夹1\\文件夹11\\文件夹111");
System.out.println(f3.delete());
System.out.println("----");
}
执行
public static void main(String[] args) {
show01();//createNewFile();返回真(创建成功)假(已存在),没法创建文件夹
show02();//创建文件夹:mkdir()创建单级文件夹,mkdirs()既可以单级,也可以多级
System.out.println("------------222---------");
for (int i = 0; i < 3; i++) {
show03();//delete()
}
}
输出结果
true
true
true
------------222---------
false
false
true
----
false
true
false
----
true
false
false
----
6.遍历目录
list()返回一个String数组,表示该目录中所有文件或目录
隐藏的也能遍历出来
如果遍历的是文件,或路径错误,就会报空指针异常
private static void show01() {
File file = new File("F:\\IdeaProjects\\baisc-codeII");
String[] list = file.list();//返回一个String数组,表示该目录中所有文件或目录
for(String s:list){
System.out.println(s);
}
}
结果:
.idea
1.txt
day01-code
day02-code
day03-code
day04-code
day05-code
day06-code
day08-code
out
文件夹
listFiles()返回的是File类型的数组
private static void show02() {
File file = new File("F:\\IdeaProjects\\baisc-codeII");
File[] files = file.listFiles();//返回的是File类型的数组
for (File f:files){
System.out.println(f);
}
结果:
F:\IdeaProjects\baisc-codeII\.idea
F:\IdeaProjects\baisc-codeII\1.txt
F:\IdeaProjects\baisc-codeII\day01-code
F:\IdeaProjects\baisc-codeII\day02-code
F:\IdeaProjects\baisc-codeII\day03-code
F:\IdeaProjects\baisc-codeII\day04-code
F:\IdeaProjects\baisc-codeII\day05-code
F:\IdeaProjects\baisc-codeII\day06-code
F:\IdeaProjects\baisc-codeII\day08-code
F:\IdeaProjects\baisc-codeII\out
F:\IdeaProjects\baisc-codeII\文件夹
小总结
我是从元旦开始看这个培训班视频的,到今天一共45天,看了培训班19天(前350节)讲的内容,刨除过年期间耽误的时间,效率也是比较低。JavaSE课程还有流、网络编程、常用的函数式接口这几部分没有看,我准备暂时跳过这几节课,直接开始看JavaWeb(458节开始)的课程。计划未来三天看完相关数据库方面的课程(476-568)。