目录
一、File 文件对象
在计算机系统中,文件是非常重要的存储方式。Java的标准库java.io提供了File对象来操作文件和目录。要构造一个File对象,需要通过构造方法,传入该文件的本地物理路径。
创建文件和文件夹:
// 创建一个存在的文件夹 File f1 = new File("D:\\课件整理和发送\\javaSE2404班\\Test"); // 创建一个存在的文件 File f2 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt"); // 创建一个不存在的文件夹 File f3 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\aaa"); // 创建一个不存在的文件 File f4 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\b.txt");
1. 创建对象
构造方法1:
public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径
构造方法2:
public File(String parent,String child)以parent为父路径,child为子路径创建File对象
构造方法3:
public File(File parent,String child)根据一个父File对象和子文件路径创建File对象
示例:
// 构造方法2 // public File(String parent,String child) // 以parent为父路径,child为子路径创建File对象 String parent = "D:\\课件整理和发送\\javaSE2404班\\Test"; String child = "b.txt"; File f1 = new File(parent, child); System.out.println(f1); // 构造方法3 // public File(File parent,String child) // 根据一个父File对象和子文件路径创建File对象 File parentF1 = new File(parent); File f2 = new File(parentF1, child); System.out.println(f2);
注意事项:
●一个File对象代表指向硬盘中的一个文件或者目录路径
●无论该路径下是否存在文件或者目录,都不影响File对象的创建
2. 相对路径和绝对路径
构造File对象时,既可以传入绝对路径,也可以传入相对路径。绝对路径是以根目录开头的完整路径。
注意:Windows平台使用\作为路径分隔符,在Java字符串中需要用\\表示一个\。File f = new File("C:\\Windows\\notepad.exe");
Linux平台使用/作为路径分隔符:
File f = new File("/usr/bin/javac");
绝对路径:从盘符开始
传入相对路径时,相对路径前面加上当前目录就是绝对路径,可以用.表示当前目录,..表示上级目录。
// 假设当前目录是C:\Docs File f1 = new File("sub\\javac"); // 绝对路径是C:\Docs\sub\javac File f3 = new File(".\\sub\\javac"); // 绝对路径是C:\Docs\sub\javac File f3 = new File("..\\sub\\javac"); // 绝对路径是C:\sub\javac
File对象有3种形式表示的路径,一种是getPath(),返回构造方法传入的路径,一种是getAbsolutePath(),返回绝对路径,一种是getCanonicalPath(),它和绝对路径类似,但是返回的是规范路径。
//public String getAbsolutePath():获取文件的绝对路径 // public String getPath() :获取路径,返回定义文件时使用的路径 // public String getCannoicalPath() 获取规范路径 File f1=new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt"); System.out.println("文件的绝对路径:"+f1.getAbsolutePath()); System.out.println("获取路径 :"+f1.getPath()); System.out.println("获取规范路径 :"+ f1.getCanonicalPath()); System.out.println("=============f2================="); File f2 = new File("sub\\javac"); System.out.println("文件的绝对路径:"+f2.getAbsolutePath()); System.out.println("获取路径 :"+f2.getPath()); System.out.println("获取规范路径 :"+ f2.getCanonicalPath()); System.out.println("=============f3================="); File f3 = new File(".\\sub\\javac"); System.out.println("文件的绝对路径:"+f3.getAbsolutePath()); System.out.println("获取路径 :"+f3.getPath()); System.out.println("获取规范路径 :"+ f3.getCanonicalPath()); System.out.println("=============f4================="); File f4 = new File("..\\sub\\javac"); System.out.println("文件的绝对路径:"+f4.getAbsolutePath()); System.out.println("获取路径 :"+f4.getPath()); System.out.println("获取规范路径 :"+ f4.getCanonicalPath());
运行结果:
3. 一些方法
汇总:
获取文件信息:
public String getName() :获取文件的名称,带后缀 public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。 public long lastModified() :获取最后一次的修改时间,毫秒值 使用new Date(f1.lastModified());// 返回的是当天时间 public String getAbsolutePath():获取文件的绝对路径 public String getPath() :获取路径,返回定义文件时使用的路径 public String getCannoicalPath() 获取规范路径 public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组---注意返回类型 public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组----返回时File 注意: 1.在使用时要确认其是一个目录(如果是文件返回为null,如果没有权限访问此目录返回也是null) 2.当文件对象代表一个空文件夹时 返回一个长度为0的数组 3.当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回 4.单文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放入File数组中放回,包含隐藏文件
判断文件:
public boolean exists() :判断是否存在 public boolean isDirectory():判断是否是目录 public boolean isFile() :判断是否是文件 public boolean canRead() :判断是否可读 public boolean canWrite() :判断是否可写 public boolean isHidden() :判断是否隐藏
删除文件:
public boolean delete():删除此抽象路径名表示的文件或者文件夹 注意:delete方法只删除文件和空文件夹,是直接删除不走回收站
创建文件:
public boolean createNewFile()创建文件。若文件存在,则不创建,返回false public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
获取文件信息1:
●public String getName() :获取文件的名称,带后缀
●public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。
●public long lastModified() :获取最后一次的修改时间,毫秒值// 创建一个存在的文件夹 File f1 = new File("D:\\课件整理和发送\\javaSE2404班\\Test"); // 创建一个存在的文件 File f2 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\a.txt"); // 创建一个不存在的文件夹 File f3 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\aaa"); // 创建一个不存在的文件 File f4 = new File("D:\\课件整理和发送\\javaSE2404班\\Test\\b.txt"); // public String getName() :获取文件的名称,带后缀 // public long length() :获取文件长度(即:字节数---真实的大小)。不能获取目录的长度--仅表示当前操作系统为保存目录所涉及的长度。 // public long lastModified() :获取最后一次的修改时间,毫秒值 System.out.printf("[%s]目录的长度[%d],最后一次修改时间[%s]\n",f1.getName(),f1.length(),new Date(f1.lastModified())); System.out.printf("[%s]文件的长度[%d],最后一次修改时间[%s]\n",f2.getName(),f2.length(),new Date(f2.lastModified())); System.out.printf("[%s]目录的长度[%d],最后一次修改时间[%s]\n",f3.getName(),f3.length(),new Date(f3.lastModified())); System.out.printf("[%s]文件的长度[%d],最后一次修改时间[%s]\n",f4.getName(),f4.length(),new Date(f4.lastModified()));