一、File 类的使用
1.File类的常用构造器
public File(String pathname)
以pathname 为路径创建 File 对象,可以是 绝对路径或者相对路径 ,如果
pathname是相对路径,则默认的当前路径在系统属性 user.dir 中存储。
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始
public File(String parent,String child)
以parent 为父路径, child 为子路径创建 File 对象。
public File(File parent,String child)
根据一个父File 对象和子文件路径创建 File 对象
@Test public void test1(){ //构造器1: File file1 = new File("hello.txt");//相对于当前的module File file2 = new File("D:\\workplace__idea\\JavaSenior\\JavaSenior\\day08\\he.txt"); System.out.println(file1); System.out.println(file2); //构造器2: File file3 = new File("D:\\workplace__idea","JavaSenior"); System.out.println(file3); //构造器3: File file4 = new File(file3,"hi.txt"); System.out.println(file4); }
2.路径分隔符
*路径中的每级目录之间用一个 路径分隔符 隔开。
*路径分隔符和系统有关:
windows和 DOS 系统默认使用“\”来表示
UNIX和 URL 使用“/”来表示
*Java 程序支持跨平台运行,因此路径分隔符要慎用。
*为了解决这个隐患, File 类提供了一个常量:
public static final String separator 。根据操作系统,动态的提供分隔符。
举例:
File file1 = new File( "d:\\atguigu\\info.txt" );
File file2 = new File( "d:" + File. separator + "atguigu" + File. separator + "info.txt" );
File file3 = new File( "d:/atguigu" );
3.常用方法
获取功能:
public String getAbsolutePath() : 获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent() : 获取上层文件目录路径。若无,返回 null
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的 File 数组
File 类的重命名功能
public boolean renameTo(File dest): 把文件重命名为指定的文件路径
@Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new File("d:\\io\\hi.txt"); System.out.println(file1.getAbsoluteFile()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(new Date(file1.lastModified())); System.out.println(); System.out.println(file2.getAbsoluteFile()); System.out.println(file2.getPath()); System.out.println(file2.getName()); System.out.println(file2.getParent()); System.out.println(file2.length()); System.out.println(file2.lastModified()); } @Test public void test3(){ File file = new File("D:\\workplace__idea\\JavaSenior\\JavaSenior"); String[] list = file.list(); for (String s : list){ System.out.println(s); } System.out.println(); File[] files = file.listFiles(); for (File f : files){ System.out.println(f); } } /* public boolean renameTo(File dest):把文件重命名为指定的文件路径 比如:file1.removeTo(file2)为例: 要想返回true,需要file1在硬盘中是存在的,file2是不存在的 */ @Test public void test4(){ File file1 = new File("hello.txt"); File file2 = new File("D:\\io\\hi.txt"); boolean renameTo = file2.renameTo(file1); System.out.println(renameTo); }
判断功能:
创建功能:
删除功能:
File dir1 = new File("D:/IOTest/dir1"); if (!dir1.exists()) { // 如果D:/IOTest/dir1不存在,就创建为目录 dir1.mkdir(); } // 创建以dir1为父目录,名为"dir2"的File对象 File dir2 = new File(dir1, "dir2"); if (!dir2.exists()) { // 如果还不存在,就创建为目录 dir2.mkdirs(); } File dir4 = new File(dir1, "dir3/dir4"); if (!dir4.exists()) { dir4.mkdirs(); } // 创建以dir2为父目录,名为"test.txt"的File对象 File file = new File(dir2, "test.txt"); if (!file.exists()) { // 如果还不存在,就创建为文件 file.createNewFile(); }