File类的实例化与常用方法

一、File类的理解

  • File类位于Java.io包下。
  • File类的一个对象,对应与操作系统下的一个文或一个文件目录。
  • File类中声明了新建,删除,获取名称,重命名等方法,并没有涉及到文件内容的读写操作,要想实现文件内容的读写我们就需要使用io流
  • File类的对象,通常是最为io流操作的端点出现。

二、构造器

import org.junit.Test;

import java.io.File;

public class FileTest {
    /**
     * public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径
     * public File(String parent,Sting child):以parent 为父路径,child为子路径创建File对象
     * public File(File parent,String child):根据一个父File对象和子文件路径创建File对象
     *
     *
     * 文件的路径表示方式
     * 方式1:绝对路径: 包括盘符在内的文件或文件目录的完整路径
     * 方式2:相对路径   相较于某个文件目录来讲的相对位置
     *          在IDEA中,如果使用单元测试方法,相对于当前的module来讲
     *                   如果使用main()方法:相对于当前的project来讲
     */
    @Test
    public void test1(){
        // public File(String pathname):以pathname为路径创建File对象,可以是绝对路径或者相对路径
      File file1= new File ( "E://io/hello.txt" );
      File file2= new File ( "abc" );
        System.out.println (file2.getAbsolutePath ());
    }
    @Test
    public void test2(){
        //public File(String parent,Sting child)以parent 为父路径,child为子路径创建File对象
    File file1 = new File ( "D://io","abc.txt" );
        System.out.println (file1.getAbsolutePath ());
    File file2 =new File ( "abc","asd.txt" );
    // public File(File parent,String child):根据一个父File对象和子文件路径创建File对象
    File file3=new File (file2,"666.txt");
        System.out.println (file3.getAbsolutePath ());//D:\javacode\fanshe\abc\asd.txt\666.txt

    }
}

三、常用方法

* public String getName():获取名称
* public String getPath():获取路径
* public String getAbsolutePath():获取绝对路径
* public File getAbsoluteFile():获取绝对路径表示的文件
* public String getParent():获取上层文件目录路径
* public long length():获取文件长度,不能获取目录长度
* public long lastModified():获取最后一次的修改时间,毫秒值
import org.junit.Test;

import java.io.File;

public class FileTest1 {
    /**
     * public String getName():获取名称
     * public String getPath():获取路径
     * public String getAbsolutePath():获取绝对路径
     * public File getAbsoluteFile():获取绝对路径表示的文件
     * public String getParent():获取上层文件目录路径
     * public long length():获取文件长度,不能获取目录长度
     * public long lastModified():获取最后一次的修改时间,毫秒值
     *
     */
    @Test
    public void test1(){
    File file1  =  new File ( "E:\\io\\io1" );
        System.out.println (file1.getName ());
        System.out.println (file1.getPath() );
        System.out.println (file1.getAbsolutePath ());
        System.out.println (file1.getAbsoluteFile ());
        System.out.println (file1.getParent ());
        System.out.println (file1.length ());
        System.out.println (file1.lastModified ());
    }
}
* public String [] list() :返回一个String数组,表示该File目录总的所有子目录或文件
* public File[] listFiles():返回一个File数组,表示File目录中的所有的子文件或目录
/**
     * public String [] list() :返回一个String数组,表示该File目录总的所有子目录或文件
     * public File[] listFiles():返回一个File数组,表示File目录中的所有的子文件或目录
     *
     */
    @Test
    public void test3(){
        File file =new File ( "E:\\yy\\9.26.0.0\\components\\com.yy.cefdev2\\131073" );
        String[] listArr =file.list ();
        for (String s :listArr
             ) {
            System.out.println (s);

        }
        System.out.println ("------------------------------------------------------------");
        File [] files = file.listFiles ();
        for (File f:files
             ) {
            System.out.println (f);
        }
    }
* File类的重命名功能
* public boolean renameTo(File dest) :把文件重命名为指定的文件路径
/**
     * File类的重命名功能
     * public boolean renameTo(File dest) :把文件重命名为指定的文件路径
     */
    @Test
    public void test4(){
        File file1 =new File ( "abc.txt" );
        File file2 =new File ( "E:\\io\\io1\\a.txt" );
//        file1.renameTo ( file2 );
        boolean renameSuccess =file1.renameTo ( file2 );
        System.out.println (renameSuccess?"重命名成功":"重名名失败");

        System.out.println ( file1.getAbsolutePath ());

    }
* 判断功能的方法
* public boolean exists():此File表示的文件或目录是否实际存在。
* public boolean isDirectory():此file表示的是否为目录
* public boolean isFile():此File表示的是否为文件
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
/**
     * 判断功能的方法
     * public boolean exists():此File表示的文件或目录是否实际存在。
     * public boolean isDirectory():此file表示的是否为目录
     * public boolean isFile():此File表示的是否为文件
     * public boolean canRead():判断是否可读
     * public boolean canWrite():判断是否可写
     * public boolean isHidden():判断是否隐藏
     *
     */
    @Test
    public void test5(){
        File file1 =new File ( "E:\\io\\io1\\a.txt" );
        System.out.println (file1.exists ());
        System.out.println (file1.isDirectory ());
        System.out.println (file1.isFile ());
        System.out.println (file1.canRead ());
        System.out.println (file1.canWrite ());
        System.out.println (file1.isHidden ());
        File file2 =new File ( "E:\\io\\io1" );
        System.out.println (file2.exists ());
        System.out.println (file2.isDirectory ());
        System.out.println (file2.isFile ());
        System.out.println (file2.canRead ());
        System.out.println (file2.canWrite ());
        System.out.println (file2.isHidden ());
    }
* 判断功能的方法
* public boolean exists():此File表示的文件或目录是否实际存在。
* public boolean isDirectory():此file表示的是否为目录
* public boolean isFile():此File表示的是否为文件
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
/**
     * 判断功能的方法
     * public boolean exists():此File表示的文件或目录是否实际存在。
     * public boolean isDirectory():此file表示的是否为目录
     * public boolean isFile():此File表示的是否为文件
     * public boolean canRead():判断是否可读
     * public boolean canWrite():判断是否可写
     * public boolean isHidden():判断是否隐藏
     *
     */
    @Test
    public void test5(){
        File file1 =new File ( "E:\\io\\io1\\a.txt" );
        System.out.println (file1.exists ());
        System.out.println (file1.isDirectory ());
        System.out.println (file1.isFile ());
        System.out.println (file1.canRead ());
        System.out.println (file1.canWrite ());
        System.out.println (file1.isHidden ());
        System.out.println ("--------------------");
        File file2 =new File ( "E:\\io\\io1" );
        System.out.println (file2.exists ());
        System.out.println (file2.isDirectory ());
        System.out.println (file2.isFile ());
        System.out.println (file2.canRead ());
        System.out.println (file2.canWrite ());
        System.out.println (file2.isHidden ());
    }
    /**
     * 创建、删除功能
     * public boolean createNewFile():创建文件,若文件存在,则不创建,返回false
     * public boolean mkdir() :创建文件目录 如果此文件目录存在,就不创建了。如果此文件目录不存在就创建
     * public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建
     * public boolean delete():删除文件或者文件夹
     *
     */
    @Test
    public void test6() throws IOException {
        File file1 =new File ( "E:/io/io1/666.txt" );
        if (!file1.exists ()){
            file1.createNewFile ();
            System.out.println ("创建成功");
        }else {
            System.out.println ("此文件已存在");
            file1.delete ();
            System.out.println ("文件删除成功");
        }
    }
    @Test
    public void text7(){
        File file1 =new File ( "E:/io/io2" );
        if(!file1.exists ()){
            file1.mkdir ();
        }
        File file2 =new File ( "E:/ioo/io2" );
        if (!file2.exists ()){
            file2.mkdirs ();
        }
    }

四、案例

1.递归打印文件名称

import org.junit.Test;

import java.io.File;
//递归输出文件
public class Exer03 {
    @Test
    public void test1(){
        File file1 =new File ( "D:/javacode" );
        printFileName(file1);

    }
    public void printFileName(File file){
        if(file.isFile ()){
            System.out.println (file.getName ());
        }else if (file.isDirectory ()){
       File []  files=file.listFiles ();
            for (File f:files
                 ) {
                printFileName ( f );
            }
        }
    }
}

你可能感兴趣的:(java,intellij-idea,log4j)