File类---Day28
概述
java.io.file 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
构造方法
1.public file(string pathname) :通过将给定的路径名获得file对象
2.public file(string parent, string child) :从父路径名字符串和子路径名获得file对象。
3.public file(file parent, string child) :从父抽象路径名和子路径名获得file对象。
1 package demosummary.file; 2 3 import java.io.file; 4 5 /** 6 * public file(string pathname) :通过将给定的路径名获得file对象 7 * public file(string parent, string child) :从父路径名字符串和子路径名获得file对象 8 * public file(file parent, string child) :从父抽象路径名和子路径名获得file对象 9 */ 10 public class filedemo1 { 11 public static void main(string[] args) { 12 //public file(string pathname) :通过将给定的路径名获得file对象 13 string pathname = "d:\\a.txt"; 14 file file = new file(pathname); 15 16 //public file(string parent, string child) :从父路径名字符串和子路径名获得file对象 17 string parent = "d:\\a"; 18 string child = "a.txt"; 19 file file1 = new file(parent, child); 20 21 //public file(file parent, string child) :从父抽象路径名和子路径名获得file对象 22 file parentdir = new file("d:\\a"); 23 string child1 = "a.txt"; 24 file file2 = new file(parentdir, child1); 25 } 26 }
备注:
1. 一个file对象代表硬盘中实际存在的一个文件或者目录。
2. 无论该路径下是否存在文件或者目录,都不影响file对象的创建。
绝对路径和相对路径(最开始已了解,再次复习)
绝对路径:从盘符开始的路径,这是一个完整的路径。
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
文件创建和删除方法
1.public boolean createnewfile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
2.public boolean delete() :删除由此file表示的文件或目录。
3.public boolean mkdir() :创建由此file表示的目录。
4.public boolean mkdirs() :创建由此file表示的目录,包括任何必需但不存在的父目录。
1 package demosummary.file; 2 3 import java.io.file; 4 import java.io.ioexception; 5 6 /** 7 * 1.public boolean createnewfile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 8 * 9 * 2.public boolean mkdir() :创建由此file表示的目录。 10 * 11 * 3.public boolean mkdirs() :创建由此file表示的目录,包括任何必需但不存在的父目录。 12 * 13 * 4.public boolean delete() :删除由此file表示的文件或目录。 14 */ 15 public class filecreat { 16 public static void main(string[] args) throws ioexception { 17 //1.public boolean createnewfile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 18 file file = new file("a.txt"); 19 system.out.println("是否创建文件:"+file.createnewfile()); 20 21 //2.public boolean mkdir() :创建由此file表示的目录。 22 file file1 = new file("newdir"); 23 system.out.println("是否创建目录:"+file1.mkdir()); 24 25 //3.public boolean mkdirs() :创建由此file表示的目录,包括任何必需但不存在的父目录。 26 file file2 = new file("newdir\\newdir"); 27 system.out.println("是否创建多级目录:"+file2.mkdirs()); 28 29 //4.public boolean delete() :删除由此file表示的文件或目录。 30 system.out.println("是否删除文件:"+file.delete()); 31 system.out.println("是否删除目录:"+file2.delete()); 32 //delete方法,如果此file表示目录,则目录必须为空才能删除 33 } 34 }
常用方法
1.public string getabsolutepath() :返回此file的绝对路径名字符串。
2.public string getpath() :将此file转换为路径名字符串。
3.public string getname() :返回由此file表示的文件或目录的名称。
4.public long length() :返回由此file表示的文件的长度。
1 package demosummary.file.fileresources; 2 3 import java.io.file; 4 5 /** 6 * public string getabsolutepath() :返回此file的绝对路径名字符串。 7 * 8 * public string getpath() :将此file转换为路径名字符串。 9 * 10 * public string getname() :返回由此file表示的文件或目录的名称。 11 * 12 * public long length() :返回由此file表示的文件的长度。 13 */ 14 public class filedemo2 { 15 public static void main(string[] args) { 16 file file = new file("d:\\1.txt"); 17 system.out.println("文件的绝对路径:"+file.getabsolutepath()); 18 system.out.println("文件的构造路径:"+file.getparent()); 19 system.out.println("文件名:"+file.getname()); 20 system.out.println("文件的长度:"+file.length()); 21 /** 22 * 输出结果 23 * 文件的绝对路径:d:\1.txt 24 * 文件的构造路径:d:\ 25 * 文件名:1.txt 26 * 文件的长度:15 27 */ 28 } 29 }
length(),表示文件的长度。但是file对象表示目录,则返回值未指定
文件或目录的判断方法
1.public boolean exists() :此file表示的文件或目录是否实际存在。
2.public boolean isdirectory() :此file表示的是否为目录。
3.public boolean isfile() :此file表示的是否为文件。
1 package demosummary.file; 2 3 import java.io.file; 4 5 /** 6 * 1.public boolean exists() :此file表示的文件或目录是否实际存在。 7 * 8 * 2.public boolean isdirectory() :此file表示的是否为目录。 9 * 10 * 3.public boolean isfile() :此file表示的是否为文件。 11 */ 12 public class filedetermine { 13 public static void main(string[] args) { 14 file file = new file("d://1.txt"); 15 file file1 = new file("d://1.txt"); 16 file file2 = new file("d://download"); 17 system.out.println("文件或目录是否存在:"+file.exists()); 18 system.out.println("是否为文件:"+file1.isfile()); 19 system.out.println("是否为目录:"+file2.isdirectory()); 20 /** 21 * 输出结果 22 * 文件或目录是否存在:true 23 * 是否为文件:true 24 * 是否为目录:true 25 */ 26 27 } 28 }
目录的遍历
1.public string[] list() :返回一个string数组,表示该file目录中的所有子文件或目录。
2.public file[] listfiles() :返回一个file数组,表示该file目录中的所有的子文件或目录。
1 package demosummary.file; 2 3 import java.io.file; 4 5 /** 6 * 1.public string[] list() :返回一个string数组,表示该file目录中的所有子文件或目录。 7 * 2.public file[] listfiles() :返回一个file数组,表示该file目录中的所有的子文件或目录。 8 */ 9 public class fileiterate { 10 public static void main(string[] args) { 11 //1.public string[] list() :返回一个string数组,表示该file目录中的所有子文件或目录。 12 file dir = new file(".//src//demosummary//file"); 13 string[] list = dir.list(); 14 for (string s : list) { 15 system.out.println(s); 16 } 17 18 system.out.println("--------分割线--------"); 19 20 //2.public file[] listfiles() :返回一个file数组,表示该file目录中的所有的子文件或目录。 21 file[] files = dir.listfiles(); 22 for (file file : files) { 23 system.out.println(file); 24 } 25 26 /** 27 * 输出结果 28 * a.txt 29 * filecreat.java 30 * filedemo1.java 31 * filedemo2.java 32 * filedetermine.java 33 * fileiterate.java 34 * fileresources 35 * --------分割线-------- 36 * .\src\demosummary\file\a.txt 37 * .\src\demosummary\file\filecreat.java 38 * .\src\demosummary\file\filedemo1.java 39 * .\src\demosummary\file\filedemo2.java 40 * .\src\demosummary\file\filedetermine.java 41 * .\src\demosummary\file\fileiterate.java 42 * .\src\demosummary\file\fileresources 43 */ 44 } 45 }
1 package demosummary.file; 2 3 import java.io.file; 4 5 /** 6 * 1.public string[] list() :返回一个string数组,表示该file目录中的所有子文件或目录。 7 * 2.public file[] listfiles() :返回一个file数组,表示该file目录中的所有的子文件或目录。 8 */ 9 public class fileiterate { 10 public static void main(string[] args) { 11 //1.public string[] list() :返回一个string数组,表示该file目录中的所有子文件或目录。 12 file dir = new file(".//src//demosummary//file"); 13 string[] list = dir.list(); 14 for (string s : list) { 15 system.out.println(s); 16 } 17 18 system.out.println("--------分割线--------"); 19 20 //2.public file[] listfiles() :返回一个file数组,表示该file目录中的所有的子文件或目录。 21 file[] files = dir.listfiles(); 22 for (file file : files) { 23 system.out.println(file); 24 } 25 26 /** 27 * 输出结果 28 * a.txt 29 * filecreat.java 30 * filedemo1.java 31 * filedemo2.java 32 * filedetermine.java 33 * fileiterate.java 34 * fileresources 35 * --------分割线-------- 36 * .\src\demosummary\file\a.txt 37 * .\src\demosummary\file\filecreat.java 38 * .\src\demosummary\file\filedemo1.java 39 * .\src\demosummary\file\filedemo2.java 40 * .\src\demosummary\file\filedetermine.java 41 * .\src\demosummary\file\fileiterate.java 42 * .\src\demosummary\file\fileresources 43 */ 44 } 45 }
调用listfiles方法的file对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。