用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
File对象可以作为参数传递给流的构造函数
了解File类中的常用方法
注意:流只能操作数据,而想要操作将数据封装成的文件,那么就需要File类;
1、创建
Boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false;和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖;
Boolean mkdir():创建文件夹;
Boolean mkdirs():创建多级文件夹
2、删除
Boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false;
Void deleteOnExit():在程序退出时删除指定文件;
注意
当一段代码操作完File文件后,想要删除File文件,可能出现删除不了的情况;原因有两点,第一点可能是因为代码出现异常,造成不会执行到删除File的代码;
第二点如果将删除File文件的代码写在finally中,可能出现当执行这行代码的时候,文件还在被使用,那么该文件还是没法删除;比如你无法删除正在播放的视频......
3、判断
Boolean exists():文件是否存在;
isFile():是否是文件;
isDirectory():是否是文件夹;
isHidden():是否隐藏
isAbsolute():构造函数中是否是绝对路径
4、获取信息
getName():
getPath():获取相对路径
getParent():获取相对路径的父路径
getAbsolutePath():获取绝对路径
Long lastModified():
Long length():
package com.javaxl.io.file; import java.io.File; import java.io.IOException; /** * @author 小李飞刀 * @site www.javaxl.com * @company * @create 2019-06-12 19:09 */ public class FileDemo { public static void main(String[] args) throws IOException { // method_1(); // method_2(); // method_3(); // method_4(); method_5(); } /** * createNewFile与delete方法案例 * @throws IOException */ public static void method_1() throws IOException { //单单这一行代码是不会生成FileDemo.txt文件的 File f = new File("C:\\FileDemo.txt"); // 创建f文件 System.out.println(f.createNewFile()); // 删除f文件 // System.out.println(f.delete()); } /** * exists、canExecute、mkdir、mkdirs方法案例 * @throws IOException */ public static void method_2() throws IOException { File f = new File("C:\\FileDemo.txt"); System.out.println(f.exists()); System.out.println(f.canExecute()); File fs = new File("C:\\dd\\ee\\FileDemo.txt"); // fs.mkdir();不能创建多级目录 fs.mkdirs();//用来创建多级目录,注意这里“FileDemo.txt”不是文件,是目录 } /** * isDirectory、isFile、isAbsolute案例讲解 * 记住在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在; * 通过exists判断,如果不做该判断的话,就会出现既不是文件也不是文件夹的诡异现象 * @throws IOException */ public static void method_3() throws IOException { File f = new File("FileDemo.txt"); // f.createNewFile();// 没有C:\dd\ee报 “java.io.IOException: 系统找不到指定的路径” 错误; //有C:\dd\ee就输出 false true f.mkdirs();// 输出 true false System.out.println(f.isDirectory()); System.out.println(f.isFile()); System.out.println(f.isAbsolute()); } /** * renameTo f1重命名为f2 成功为true反之为false * @throws IOException */ public static void method_4() throws IOException { File f1 = new File("C:\\FileDemo.txt"); File f2 = new File("C:\\FileDemo2.txt"); System.out.println(f1.renameTo(f2)); } /** * getPath、getAbsolutePath、getParent案例讲解 * 该方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null; * 如果相对路径中有上一层目录,那么该目录就是返回结果; * @throws IOException */ public static void method_5() throws IOException { File f = new File("eee\\FileDemo.txt"); System.out.println(f.getPath());// eee\FileDemo.txt System.out.println(f.getAbsolutePath()); // E:\workspace\ideaProjects\test\eee\FileDemo.txt System.out.println(f.getParent());// eee } }
List方法、过滤文件夹下的文件、listFiles方法
package com.javaxl.io.file; import java.io.File; import java.io.FilenameFilter; /** * @author 小李飞刀 * @site www.javaxl.com * @company * @create 2019-06-12 20:02 */ public class FileListDemo { public static void main(String[] args) { // listDemo(); // listRootsDemo(); // listFilterDemo(); listFilesDemo(); } /** * 遍历指定文件夹下的所有文件名(包含文件以及文件夹) */ public static void listDemo() { // 使用list方法的file对象必须是封装了一个目录,该目录还必须存在 File file = new File("E:\\2018_y2_讲课\\t216"); String[] names = file.list(); for (String name : names) { System.out.println(name); } } /** * 过滤掉.txt结尾的文件,也就是.txt结尾的文件不展示 */ public static void listFilterDemo() { // 使用list方法的file对象必须是封装了一个目录,该目录还必须存在 File file = new File("E:\\2018_y2_讲课\\t216"); String[] names = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return !name.endsWith(".txt"); } }); for (String name : names) { System.out.println(name); } } /** * 获取计算机中的系统盘符列表(C、D、E、F......) */ public static void listRootsDemo() { // 使用list方法的file对象必须是封装了一个目录,该目录还必须存在 File[] files = File.listRoots(); for (File file : files) { System.out.println(file); } } /** * 遍历指定文件夹下的所有文件名及大小(包含文件以及文件夹) * 文件夹大小则是0 * 文件大小为自身大小 */ public static void listFilesDemo() { // 使用list方法的file对象必须是封装了一个目录,该目录还必须存在 File file = new File("E:\\2018_y2_讲课\\t216"); File[] files = file.listFiles(); for (File f : files) { System.out.println(f.getName() + ":" + f.length()); } } }
结果如下:
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有