IO流之File类


对于File类来说,创建对象就是创建文件或者文件夹,有3个构造器,绝对路径或者相对路径,第一种,直接填写路径,第二种,parent,chlid,创建一个上层文件,跟下层文件,第三种直接在一个对象下创建文件

对于常用的方法来说:getName,isFile,等等,

* 1:String getAbsolutePath:获取绝对路径
* 2:String getPath:获取路径
* 3:String getName:获取名称
* 4:String getParent:获取上层文件目录,若无,返回null
* 5:long length:获取文件字节数
* 6:long lastModified:获取最后一次修改的时间
* 7:String[] list:获取指定目录下的所有文件或文件目录的名称数组
* 8:File[] listFiles:获取指定目录下的所有文件或者文件目录的File数组
****************
  1 /**
  2  * File类的使用
  3  * 1:File类的一个对象就是一个文件或者一个文件夹
  4  * 2:File类声明在java.io包下
  5  * 3:创建对象有3种构造器
  6  *
  7  *
  8  */
  9 public class FileTest {
 10     //如何创建File类的实例
 11     @Test
 12     public void test1(){
 13         //构造器1:直接创建一个文件
 14         File file=new File("hello.txt");//相对路径:相当于当前的module下
 15         File file4=new File("E:\\");
 16         System.out.println(file4.list());
 17         File file1=new File("E:\\hello\\DAY08\\src\\IO\\hello.txt");
 18         //绝对路径:包含盘符的文件路径
 19         System.out.println(file);
 20         //构造器2:创建文件夹,两个参数
 21         File file2=new File("E:\\hello","E:\\hello\\DAY08");
 22         System.out.println(file2);
 23         //构造器3:在已有的一个文件下创建文件
 24         File file3=new File(file2,"hpp.txt");
 25         System.out.println(file3);
 26     }
 27     /**
 28      * 常用的方法;
 29      * 1:String getAbsolutePath:获取绝对路径
 30      * 2:String getPath:获取路径
 31      * 3:String getName:获取名称
 32      * 4:String getParent:获取上层文件目录,若无,返回null
 33      * 5:long length:获取文件字节数
 34      * 6:long lastModified:获取最后一次修改的时间
 35      * 7:String[] list:获取指定目录下的所有文件或文件目录的名称数组
 36      * 8:File[] listFiles:获取指定目录下的所有文件或者文件目录的File数组
 37      * File类的使用:
 38      * 1:File类的一个对象就代表了一个文件或者文件夹
 39      * 2:File类中只涉及到文件的创建删除,重命名,修改时间,文件大小等方法,未涉及到文件内容的读取与写入
 40      * 如果需要读写文件内容必须用到IO流
 41      * 3:后续File类的对象通常会作为参数传递到流的构造器这,指明读写的"终点".
 42      *
 43      *
 44      */
 45     @Test
 46     public void test2(){
 47         File file=new File("E:\\hello","E:\\hello\\DAY08\\hpp.txt");
 48         File file1=new File("E:\\hi.txt");
 49         File file2=new File("hello.txt");
 50         System.out.println(file.getAbsoluteFile());
 51         System.out.println(file2.getPath());
 52         System.out.println(file.getName());
 53         System.out.println("***********************");
 54         System.out.println(file.getParent());
 55         System.out.println(file.length());//没有创建文件的情况下,是不存在文件长度的,
 56         System.out.println(file1.length());
 57         System.out.println(file2.length());//在day08下面创建了文件所以有长度字节数
 58         System.out.println(new Date(file2.lastModified()));
 59     }
 60     @Test
 61     public void test3(){
 62         File file=new File("E:\\");
 63         String[]list=file.list();//list方法返回一个String类型的文件目录数组
 64         for (String obj:list){
 65             System.out.println(obj);
 66         }
 67         System.out.println("****************");
 68         File[]listFiles=file.listFiles();
 69         for (File obj1:listFiles){//listFiles方法返回File型的文件目录数组
 70             System.out.println(obj1);
 71             }
 72     }
 73     @Test
 74     public void test4(){
 75         //renameTo方法:将一个文件改名剪切到另一个目录下,
 76         // 要保证file是相对路径,代表必须先在此模块下创建一个文件
 77         File file=new File("E:\\hello\\hello.txt");//绝对路径不可以转移
 78         File file1=new File("E:\\hello\\DAY08\\hpp.txt");
 79         System.out.println(file.renameTo(file1));
 80     }
 81     @Test
 82     public void test5(){
 83         //File类的判断方法
 84         File file=new File("hello.txt");
 85         System.out.println(file.isHidden());
 86         System.out.println(file.isDirectory());
 87         System.out.println(file.canRead());
 88         System.out.println(file.canWrite());
 89         System.out.println(file.exists());
 90         System.out.println(file.isFile());
 91     }
 92     @Test
 93     public void test6() throws IOException{
 94         /**
 95          * boolean createNewFile:创建文件,若文件存在则不创建,返回false;
 96          * boolean mkdir:创建文件目录,如果此文件存在,就不创建,如果上层目录不存在也不创建
 97          * boolean mkdirs:创建文件目录,如果此文件存在不创建,不存在的情况下
 98          * 不管上层文件目录存不存在,一并创建,如果上层文件存在,只创建最下面一个目录,
 99          * 如果上层文件夹不存在,那不管上层有多少层文件夹都全部创建,返回true
100          */
101         //创建硬盘中对应的文件或目录
102         File file=new File("hi.txt");
103         if (!file.exists()){//文件不存在
104           file.createNewFile();
105             System.out.println("创建成功");
106         }else {//文件存在
107             file.delete();
108             System.out.println("删除成功");
109         }
110         System.out.println("*****************");
111         //文件目录的创建
112         File file1=new File("E:\\hello\\hpp\\huang\\1323");
113         if (file1.mkdir()){
114             System.out.println("mkdir创建成功");
115         }else if (file1.mkdirs()){
116             System.out.println("mkdirs创建成功!");
117         }
118         file1.delete();//删除文件
119     }
120     @Test
121     public void test7(){
122         File file=new File("D:\\Chrome");//创建目录对象
123         listPrint(file);
124     }
125     //打印当前文件目录下的所有文件,使用递归
126     public void listPrint(File file){
127         if (file.isFile()){//当前目录下如果是一个文件,直接输出
128             System.out.println(file);
129         }else {//是一个文件夹
130             File[]files=file.listFiles();
131             for (File f:files){
132                 listPrint(f);//递归调用自己
133             }
134         }
135     }
136 }