1. File类:
File类用来把文件和文件夹封装成了对象,
方便操作文件或者是文件夹的属性,
File类对象可作为参数传给流对象。
File类和流的区别:
流操作的是数据,包括键盘输入数据,文件夹里的数据等;
File类操作文件或文件夹的属性,如创建,删除文件夹。
构造方法:有三种格式:
new File(“C:\\java\\a.txt”);
new File(“C:\\java”,“a.txt”);//这一种方法比第一种方法的优点是:可以给第一个参数传对象,指定同一个文件夹下的文件
new File(“C:”+ File.separator +” java”+”a.txt”);//分隔符File.separator是跨平台的。
注意:我刚学习这个类时的一个错误理解: File fl = new File(“C:a.txt”); 这个语句不会创建目录或文件
(我所写的“C:a.txt”是不存在的);
通过 f1.exists() 方法验证,返回值是false,即不存在“C:a.txt”;
所以创建文件或文件夹还得 对象f1调用方法,所调用发放在下面介绍。
现在也觉得这个想法挺搞笑,后面给出了创建文件及文件夹的方法,意思是语句File fl = new File(“C:a.txt”)不能创建,所以需要方法。
2. 基本方法
1.创建
创建分为创建文件和创建文件夹(目录):
创建文件:createNewFile()
创建目录:mkdir() 创建单级目录;
mkdirs() 创建多级目录;
注意: 使用这几个方法,硬盘中不存在文件或目录,则创建,且返回true,
硬盘中存在该文件或目录,创建失败,返回false。
- import java.io.File;
- import java.io.IOException;
- public class FileDemo {
- public static void main(String[] args) throws IOException {
- /* 指定文件对象 */
- File f = new File("F:" + File.separator + "java");
- File file = new File("F:\\java\\a.txt");
- /*
- * boolean mkdir()创建单级目录,当存在此目录,创建失败(false),否则创建成功(true) 例如:F:\\java
- * F盘必须存在 F:\\java\123 F:\\java必须存在 boolean
- * mkdirs()可以创建多级目录,即使前面的目录不存在,那么也会创建,存在此创建失败,不存在创建成功
- * 例如:F:\\java\day01\\hello 即使F盘中不存在java\\day01 那么使用此方法,也会创建前面不存在的目录
- * createNewFile()
- * 创建文件,指定的目录必须存在(F:\\java),如果此目录中存在此文件,此创建失败(false),不存在,则创建成功(true)
- */
- System.out.println(f.mkdir());// 创建单级目录
- System.out.println(file.createNewFile());// 创建文件
- System.out.println(new File("F:\\java\\123\\456").mkdirs());// 创建多级目录
- }
- }
2. 删除
- public class FileDemo {
- public static void main(String[] args) throws IOException {
- /* 指定文件对象 */
- File f = new File("F:" + File.separator + "java");
- File file = new File("F:\\java\\a.txt");
- /*
- * boolean delete()删除文件或者是目录(空的),如果不存在,则是false,存在则删除
- * void deleteOnExit()程序退出时删除,即使前面出现了异常,那么在程序结束的时候也会执行此语句,删除此文件
- */
- System.out.println(f.delete());// 删除目录
- System.out.println(file.delete());// 删除文件
- }
- }
3. 判断
- import java.io.File;
- import java.io.IOException;
- public class FileDemo {
- public static void main(String[] args) throws IOException {
- /* 指定文件对象 */
- File f = new File("F:" + File.separator + "java");
- File file = new File("F:\\java\\a.txt");
- /*
- * boolean exists()判断文件或者目录是否存在 boolean isFile()判断是否是文件
- *boolean isDirectory()判断是否是目录 boolean isHidden()判断是否是隐藏文件
- * boolean isAbsolute()判断是否是绝对路径
- */
- System.out.println(f.exists());// 是否存在
- System.out.println(file.isFile());// 是否是文件,若存在,切是文件,那么就是true,否则是false
- System.out.println(file.isDirectory());// 判断是否是目录,存在且是文件,那么就是true,否则是false
- System.out.println(file.isAbsolute());// 判断是否是绝对路径
- }
- }
4. 获取
boolean renameTo(Filedest)重命名,也可以模拟移动哦,重命名到其他文件夹中,那就是移动了
- String getName()获得文件名称
- String getParent()获得上一目录 String
- getAbsolutePath()获得绝对路径
- long length()获得文件大小 long
- lastModified()获得最后一次修改的时间
- import java.io.File;
- import java.io.IOException;
- public class FileDemo {
- public static void main(String[] args) throws IOException {
- /* 指定文件对象 */
- File f = new File("F:" + File.separator + "java");
- File file = new File("F:\\java\\a.txt");
- /*
- * String getName()获得文件名称
- * String getParent()获得上一目录 String
- * getAbsolutePath()获得绝对路径
- * long length()获得文件大小 long
- * lastModified()获得最后一次修改的时间
- */
- System.out.println(f.getName());// 获得名称
- System.out.println(file.getName());// 获得名称
- System.out.println(f.getParent());// 获得上一目录
- System.out.println(file.getParent());// 获得上一目录
- System.out.println(f.getAbsolutePath());// 获得绝对路径
- System.out.println(file.getAbsolutePath());// 获得绝对路径
- }
- }
- 结果:
- java
- a.txt
- F:\
- F:\java
- F:\java
- F:\java\a.txt
3.常用方法
- public class FileDemo {
- public static void main(String[] args) throws IOException {
- /*
- * String[] list()获得指定文件下的所有文件或者目录的名称(包含隐藏文件活目录)
- String[] list(FilenameFilter filter)获得名称的时候加入了过滤器(包含隐藏文件活目录)
- * File[] listFiles()获得的是指定文件下的所有File对象(包含隐藏文件活目录)
- * File[] listFiles(FilenameFilter filter)加入了过滤器(包含隐藏文件活目录)
- * static File[]listRoots()列出了可用目录的根
- */
- /* 获得所有的根目录,并打印出 */
- File[] rootFiles = File.listRoots();
- for (File f : rootFiles)
- System.out.println(f);
- /* 获得F盘下的所有文件或者目录的名称,并打印出 */
- String[] fileNames = new File("F:\\").list();
- System.out.println("-----------------\n所有名称");
- for (String name : fileNames)
- System.out.println(name);
- /* 获得F盘下的所有.txt文件安的名称,并打印出,使用的是过滤器,使用匿名内部类,复写accept方法 */
- String[] fileTxtNames = new File("F:\\").list(new FilenameFilter() {
- public boolean accept(File dir, String name) {// 此方法决定是否把其名字过滤
- return name.endsWith(".txt");
- }
- });
- System.out.println("-----------------\n.txt文件");
- for (String n : fileTxtNames)
- System.out.println(n);
- /*File[] listFiles()用法和list()用法一样,只是返回的是File对象数组*/
- File [] Files=new File("F:\\").listFiles();
- System.out.println("-----------------");
- for(File f:Files)
- System.out.println(f.getName()+":"+f.length());
- }
- }
-