File类

来源:互联网 发布:淘宝餐桌图片及价格 编辑:程序博客网 时间:2024/05/04 09:08


1. File类
在Java语言的java.io包中,由File类提供了描述文件和目录的操作与管理方法
作用:File类主要用于命名文件、查询文件属性和处理文件目录

构造方法摘要

File(File parent, String child) 这个child可以使一个文件名也可以是一个子目录      这个parent是一个File对象
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

File(String pathname)   这里的路径名可以是一个目录也可以是一个文件     
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File(String parent, String child)       这个parent为一个目录,parent事先必须存在,否则异常
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(URI uri)  通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例

 一个对应于某磁盘文件或目录的File对象一经创建, 就可以通过调用它的方法来获得文件或目录的属性。    

       1)public boolean exists( ) 判断文件或目录是否存在(测试磁盘中指定的文件或目录是否存在
       2)public boolean isFile( ) 判断是否文件
       3)public boolean isDirectory( )判断是否目录
       4)public String getName( )返回文件名或目录名
       5)public String getPath( )返回文件或目录的路径(相对路径)。
       6)public StringgetAbsolutePath()返回文件或目录的路径(绝对路径)。
       7)public long length( )获取文件的长度 
       8)public String[ ] list ( )将目录中所有文件名保存在字符串数组中返回。 (返回目录中所有文件名字符串)
       File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有:
       1) public boolean renameTo( File newFile );    重命名文件
       2) public void delete( );   删除文件
       3)
public boolean mkdir( ); 创建目录(创建文件对象指定的目录(单层目录)
       4)public boolean createNewFile();创建文件对象指定的文件
其中:File.speparator的作用是判断在不同的系统中斜杠的方向,在windows中斜杠的方向是向右斜的\\在Linux中斜杠的方向是向左斜的//,所以可见File.speparator具有跨平台性,是程序更加健壮。建议采用这种方法代替\\或者//

下面举几个例子更好的说明File类:
// 获取某一目录下后缀名为".txt"的所有文件名public static void main(String[] args) {File dir = new File("D:\\File");if (!dir.exists()) {//创建目录dir.mkdir();System.out.println("该目录不存在!");}// 返回目录中所有文件名字符串String[] names = dir.list();for (String name : names) {if (name.endsWith(".txt"))System.out.println(name);}}
// 递归遍历某一目录下所有文件和目录public static void main(String[] args) {File dir = new File("D:\\File");showDir(dir, 0);}public static void showDir(File dir, int level) {System.out.println(getLevel(level) + dir.getName());level++;//列出该目录中的所有文件File[] files = dir.listFiles();for (int x = 0; x < files.length; x++) {//判断files[x]是否为目录if (files[x].isDirectory()) {showDir(files[x], level);} else {//获取文件名System.out.println(getLevel(level) + files[x].getName());}}}public static String getLevel(int level) {StringBuilder sb = new StringBuilder();sb.append("|--");for (int x = 0; x < level; x++) {sb.insert(0, "|  ");}return sb.toString();}

删除一个带内容的目录

分析:删除目录这时应该用delete()方法,而该方法提示此路径名表示一个目录,则该目录必须为空才能删除,所以这种有内容的目录的情况下,就不能直接删除。需要遍历该目录下的所有文件,直到某个文件为止,也就是“从内往外删”。
需要用到的方法:listFiles()得到当前目录下的所有文件,isDirectory()判断是不是目录,不是目录,则删除。
代码:
// 删除一个带内容的目录public static void main(String[] args) {File dir = new File("D:\\File");deleteDir(dir);}public static void deleteDir(File dir) {// 列出该目录中的所有文件File[] files = dir.listFiles();for (int x = 0; x < files.length; x++) {// 判断是不是目录if (files[x].isDirectory()) {deleteDir(files[x]);} else {files[x].delete();}}dir.delete();}

原创粉丝点击