File类
概述以及构造方法
- file更应该叫做路径(文件或者文件夹路径);
- 路径又分为绝对路径和相对路径,从盘符开始,相对路径相对于某个位置,在eclipes下是指当前项目下。
- 构造方法:
//构造方法一
File f = new File("C:\\学生信息\\num.txt");
File ff = new File("C:/学生信息/num.txt");
System.out.println(f.exists());
System.out.println(ff.exists());
//构造方法二
String parent = "C:/学生信息";
String child = "num.txt";
File f1 = new File(parent,child);
System.out.println(f1.exists());
//构造方法三(比构造方法二功能更加强大,File操作比String能够更多)
File parent2 = new File("C:/学生信息");
String child2 = "num.txt";
File file2 = new File(parent2,child2);
System.out.println(file2.exists());
File类的功能
(1)创建
- 创建文件
File f = new File("yyy.txt");
//路径有可能写错,可能出现异常
System.out.println(f.createNewFile());
//(如果没有该文件就创建返回true,如果有该文件则不需要创建返回false)
File f2 = new File("ccc");//可以不写文件类型,但最好要写文件类型
System.out.println(f2.createNewFile());
- 创建文件夹
File f3 = new File("学生");
System.out.println(f3.mkdir());
File f4 = new File("学校.txt");//文件夹可以有后缀,但习惯上一般不写后缀
System.out.println(f4.mkdir());
File f5 = new File("学校/学生");//创建多级目录
System.out.println(f5.mkdirs());
(2)重命名
renameto方法如果路径相同就是改名字
如果路径不同就是改名并剪切
File f1 = new File("yyy.txt");
File f2 = new File("bbb.txt");
System.out.println(f1.renameTo(f2));
File f3 = new File("bbb.txt");
File f4 = new File("C:/学生信息/mmm.txt");
System.out.println(f3.renameTo(f4));
(3)删除
public Boolean delete()
- 删除时不经过回收站
- 要删除一个文件夹,文件夹中不能包含文件和文件夹(即文件夹为空),平时我们做的删除文件夹的操作,在计算机内部实际上是遍历文件夹下的文件,依次删除之后,最后删除文件夹。
(4)判断【返回值都是布尔类型】
- 是否为文件夹 isDirectory()
- 是否为文件 isFile()
- 是否可以写 canWrite()
- 是否可读 canRead()
【windows系统下认为一切文件都可以读,因此在windows系统下设置是否可读的属性不能起作用,无论设置什么,都是输出true,但是Linux系统下设置则可以得到目标结果】
- 是否存在 exists()
- 是否隐藏 isHidden()
(5)获取
- 获取路径:
getPath()是根据构造方法中传进去的地址获取地址的方法,如果传进去的是相对路径,获得的就是相对路径,如果传进去的是绝对路径,获得的就是绝对路径。
(6)输出指定目录下指定后缀的文件名 - 方式一:获得指定目录下所有文件,并找出符合条件的文件
File file = new File("C://");
String[] strings = file.list(); // 获取c盘下所有文件名
for (String s:strings) {
if (s.endsWith(".png")) {
System.out.println(s);
}
}
- 方式二:获取指定目录下的文件或者文件夹,找到以指定后缀结束的指定文件后输出
File file = new File("C://");
File[] files = file.listFiles(); //c盘下指定的文件或者文件夹
for (File f :files) {
if (f.isFile() && f.getName().endsWith(".png")) {
System.out.println(f);
}
}
(7)文件名称过滤器
符合要求的文件名存入新的数组,直接获取数组中每个元素即为符合要求的文件名
File file = new File("C://");
String[] strings = file.list(new FilenameFilter() {
//此时dir即为C://,name即为文件名
@Override
public boolean accept(File dir, String name) {
File file1 = new File(dir,name);
return file1.isFile() && file1.getName().endsWith(".png");
}
});
for (String s : strings) {
System.out.println(s);
}