javaday22_暂时

IO概述:

File:

File 类的出现:

File 类 在java.io  中!

这个类 是平台无关的。它既可以用于 UNIX 系统,也可以用Windows 

一些相关的名词:

文件:file 

目录:directory 

路径:path  

File 类静态的成员变量:

第一类 路径分隔符:

static String pathSeparator 

它是与系统路径有关的分隔符,例如环境变量的配置中,我们必须要以分号 结束。就是它!

为了方便将其表示成了 String! 

 1 package cn.zcb.demo01;
 2 
 3 import java.io.File;
 4 
 5 public class Test {
 6     public static void main(String[] args) {
 7         //File 类的静态成员变量
 8         String ret =  File.pathSeparator; 
 9         System.out.println(ret); //输出是个 分号;  它表示的是一个路径  的结束!
10             //还有它只是在windows 平台是这样的结果。Linux 上输出的是 : 冒号 !
11         
12     }
13 }
View Code

static char pathSeparatorChar

它返回的是个char ,不过,我们一般喜欢返回值是字符串,所以就用上面的了。不过上面的源码其实就是等于char + "" 变为的字符串! 

查看源码:

第二类  名称分隔符:

它指的是路径里 的每个层级的 分隔符。

在Win中是 \  ,在 Linux上 是 /  

 1 package cn.zcb.demo01;
 2 
 3 import java.io.File;
 4 
 5 public class Test {
 6     public static void main(String[] args) {
 7         //File 类的静态成员变量
 8         String ret =  File.separator; 
 9         System.out.println(ret); //输出是个  \  它表示的是一个层级目录的结束
10             //windows 上是 \  Linux 上是/  
11         
12     }
13 }
View Code

总结:在做与系统无关的时候,可能会用到上面这两个静态变量!

File 类的 构造方法:

三种重载方式:

1,第一种 File(String pathname) 

传递的pathname ,既可以写到文件夹,也可以到一个具体的文件。

然后将路径封装成 File类型对象。

 1 package cn.zcb.demo01;
 2 
 3 import java.io.File;
 4 import java.nio.file.Files;
 5 
 6 public class Test {
 7     public static void main(String[] args) {
 8 
 9 //        File file = new File("d:\\test");
10 //        File file = new File("d:\\Test");
11         File file = new File("d:\\TEST");//Win平台不区分大小写,Linux就区分了!
12         System.out.println(file);
13         /*
14         * 输出
15         * d:\test
16         * */
17 
18 //        也可以直接写到具体的文件
19         File file1 = new File("d:\\test\\a.txt");
20         System.out.println(file1); //还有他们的输出不是 地址,说明File 重写了.toString()
21 
22 
23 
24 
25     }
26 }
View Code

注:Win平台不区分大小写,Linux区分! 不过最好一致!

 1 package cn.zcb.demo01;
 2 
 3 import java.io.File;
 4 import java.nio.file.Files;
 5 
 6 public class Test {
 7     public static void main(String[] args) {
 8 
 9         File file = new File("d:\\test02"); //此路径不存在
10         System.out.println(file);  //它照样有输出,也不报错。 d:\test02
11         //这说明  构造器是不作判断的。它只是将路径变为 File的对象!
12 
13 //        File 中 有可以判断路径是否存在的方法  .exists()
14         boolean ret = file.exists();
15         System.out.println(ret); //false
16     }
17 }
构造器是 不判断是否真实存在该路径的。 .exists() 可以判断!

2,第二种 File(String parent,String child) 

Create a new File instance from a parent pathname string and a child pathname string!

 1 package cn.zcb.demo01;
 2 
 3 import java.io.File;
 4 import java.nio.file.Files;
 5 
 6 public class Test {
 7     public static void main(String[] args) {
 8         File file = new File("d:","test");
 9         System.out.println(file);
10 
11 
12     }
13 }
view code

它相对于第一种构造函数来说,它更灵活。既可以 单独控制 父路径,也可以单独控制子路径!

3,第三种 File(File parent ,String child) 

它是将一个已经初始化好了的File 对象,再给它加上个子路径!

File 类的 创建文件 -- .createNewFile() :

它只能创建文件,不能创建文件夹。如果已经存在文件,返回false !

它的创建的具体文件路径在 File的构造方法中给出!

注意:它要声明可能存在的IO 异常! throws IOExceptions

 1 package cn.zcb.demo01;
 2 import java.io.File;
 3 import java.io.IOException;
 4 
 5 public class Test {
 6     public static void main(String[] args) throws IOException {
 7 //        File file = new File("d:\\b.txt");
 8         File file = new File("d:\\b"); //此时创建的也不会是文件夹,而是文件!!!
 9 
10 
11         boolean ret =  file.createNewFile();
12         /*
13         * 该函数只能创建文件,不能创建文件夹!
14         * 而且,如果文件已经存在则返回false
15         * */
16         System.out.println(ret);
17 
18 
19     }
20 }
View Code

File 类的 创建文件夹 --- .mkdir()  和 .mkdirs() :

.mkdir 只能创建 单层文件夹,.mkdirs()  多级创建文件夹 ,二者都不能创建文件

它的创建的具体文件夹 路径在 File的构造方法中给出!

 1 package cn.zcb.demo01;
 2 import java.io.File;
 3 import java.io.IOException;
 4 
 5 public class Test {
 6     public static void main(String[] args){
 7         File file = new File("d:\\aaa");
 8 
 9         boolean ret =  file.mkdir();
10         //创建 单层文件夹!
11         System.out.println(ret);
12 
13         File file1 = new File("d:\\test\\a\\b");
14         //创建多级  文件夹!
15         boolean ret1 = file1.mkdirs();
16         System.out.println(ret1);
17 
18 
19     }
20 }
View Code

一般使用.mkdirs() 就可以了,因为它既可以创建单层文件夹也可以创建多层文件夹!

File 类的 删除文件 文件夹 .delete() :

 1 package cn.zcb.demo01;
 2 import java.io.File;
 3 
 4 public class Test {
 5     public static void main(String[] args){
 6         File file = new File("D:\\test\\a\\b");
 7         boolean ret = file.delete();
 8         System.out.println(ret); //true  
 9     }
10 }
删除多层文件夹也是可以的。

而且要十分注意到,删除是直接从硬盘中清除,不会走回收站!

File 类 的 getName()  获取 路径的最后部分:

File 类 的 length()  获取 文件的字节数:

 1 package cn.zcb.demo01;
 2 import java.io.File;
 3 
 4 public class Test {
 5     public static void main(String[] args){
 6         File file = new File("D:\\aa.txt");
 7 
 8         long res = file.length();  //获取该文件的字节数
 9         System.out.println(res);  //41736
10 
11         File dir = new File("d:\\images");
12         long res1 = dir.length();
13         System.out.println(res1); // 4096 文件夹的字节是4096
14 
15         File file1 = new File("d:\\不存在的文件.txt");
16         long res2 = file1.length();
17         System.out.println(res2); //0  不存在的文件的字节数为  0
18 
19 
20 
21     }
22 }
View Code

File 类 获取绝对路径:

如果写的是个 相对路径,是相对于当前工程的 根目录。

File 类 获取父路径:

File 类 判断功能:

它既可以判断是否存在文件,也可以判断是否存在文件夹!

除了 isDirectory () 外,还有 isFile(); 二者用一个就好了!

File 类 .list() 遍历 文件夹功能(不递归):

推荐是用 返回值是 File 的,它的内容比较全!!! 

File 类 .list() 遍历 文件夹功能(不递归):

pass 

File 类 获取系统的所有根目录:

递归:

猜你喜欢

转载自www.cnblogs.com/zach0812/p/11920850.html