Java的File类相关知识

JavaFile

目录:

1.创建File的文件或者目录的方法....

2.创建File对象的构造器的三种形式...

3.关于分割符的相关知识......................

4.file简单Api介绍...................................

5.遍历目录............................................

  1.再说File的时候就不得不先说一下创建文件和目录的三个方法。

<1>createNewFile()必须有已经创建好的路径,才能创建一个文件。返回值:如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false 

<2>mkdir() 只能在已经存在的目录中创建创建文件夹。(只能创建一个级别的文件夹) 
<3>mkdirs() 可以在不存在的目录中创建文件夹。诸如:a\\b,既可以创建多级目录。

  2.创建File对象的构造器有三种形式

A.File(String directoryPath)

B.File(String directoryPath, String filename)

C.File(File dirObj, String filename)

  在A中的构造函数没什么可说的就是一个路径,(1)如果File的对象调用createNewFile()则会再以最后一个文件名创建一个文件;(2)如果调用mkdir()或者mkdirs()则创建一个目录。

  在B中的构造器第一个参数,和第一个的效果一样,但是最后一个参数,(1)当用file对象调用createNewFile()的时候,第二个参数代表的是文件的名字,并且也只能是一个文件名。(2)调用mkdir()的时候第二个参数也只能有路径(3)如果写入第二个参数”javaio\\kc”的形式的话调用mkdirs()就会创建两级菜单javaio->kc。

  3.关于分隔符的相关知识

  路径分隔符:Windows下是“\”  unix|linux下是“/”

考虑到程序的可移植性,创建文件时建议大家选用"/",因为经过测试用java创建文件时在windows平台下用“/”也是可以的,java貌似在后台作过处理了。

还有一种用法:

用File.separator代替它们,这个永远不会出现可移植性问题。

下面举一些例子,加深理解:

File f = new File("d://book//1");   √

File f = new File("d:/book/1");√

File f = new File("d:\\book\\1");√

File f = new File("d:\book\1");  Χ  

注意: \是转义字符,所以\\才相当于\.

总结:推荐大家用"/""File.separator"

  4.file简单Api的介绍

这里写两段代码:

 1 //创建一个目录的File对象
 2 
 3 File file1=new File("E:/javatest/java");
 4 
 5 if(!file1.exists()) {
 6 
 7 file1.mkdirs();//创建目录
 8 
 9 }else {
10 
11 System.out.println("创建的目录已经存在");
12 
13 } 
14 
15  
16 
17  
18 
19 //创建一个文件
20 
21 File file2=new File("E:/javatest/java","java.txt");
22 
23 if(!file2.exists()) {
24 
25 try {
26 
27 file2.createNewFile();
28 
29 } catch (IOException e) {
30 
31 // TODO Auto-generated catch block
32 
33 e.printStackTrace();
34 
35 }
36 
37 }else {
38 
39 System.out.println("创建的文件已经存在");
40 
41 }
42 
43 //是否为路径true,,是否为文件false
44 
45 System.out.println("是否为路径"+file1.isDirectory());
46 
47 System.out.println("是否为文件"+file1.isFile());
48 
49 //是否为路径false,,是否为文件true
50 
51 System.out.println("是否为路径"+file2.isDirectory());
52 
53 System.out.println("是否为文件"+file2.isFile());
54 
55       //常用的Api
56 
57 //A.直接输出对象
58 
59 System.out.println(file1);//输出的结果为E:\javatest\java,,相当于file1.toString()方法
60 
61 System.out.println(file2);//输出的结果为E:\javatest\java\java.txt
62 
63 //B.输出绝对路径
64 
65 System.out.println(file1.getAbsolutePath());//E:\javatest\java
66 
67 System.out.println(file2.getAbsolutePath());//E:\javatest\java\java.txt
68 
69 //C.获取文件的名称
70 
71 System.out.println(file1.getName());//输出结果为最后一级的目录Java
72 
73 System.out.println(file2.getName());//输出的结果为文件的名称Java.txt
74 
75 //D.获取父目录
76 
77 System.out.println(file1.getParent());//E:\javatest
78 
79 System.out.println(file2.getParent());//E:\javatest\java
80 
81 //效果和获取父目录一样的效果
82 
83 System.out.println(file1.getParentFile().getAbsolutePath());

   5.遍历目录

file.list() 返回的是 字符串数组 直接子的名称,不包含子目录下的内容,用于;列出当前目录下的子目录和文件

  如果要遍历子目录下的内容就需要构造成File对象进行递归操作。
file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称(注意空文件夹是不会被输出的,输出的最后一级必须是文件)

public static void trvaerseFile(File dir) throws IOException{
        if(!dir.exists()) {//检查目录是否存在
            throw new IllegalArgumentException("目录"+dir+"不存在");
        }
        if(!dir.isDirectory()) {//检查路径是否存在
            throw new IllegalArgumentException("你所输入的路径"+dir+"不是目录类型的路径");
        }
        /*
        String[] fileName=dir.list();
        for (String string : fileName) {
            System.out.println("文件夹的路径"+string);
        }
        */
        File[] file=dir.listFiles();
        if(file!=null && file.length>0) {//确定File确实存在,并且有子目录
           for (File file2 : file) {
              if(file2.isDirectory()) {//如果是目录
                  //进行递归地操作
                  trvaerseFile(file2);
              }    else {//如果没有子目录就直接打印出来文件
                  System.out.println(file2);
              }
        }            
      }
    }

 

posted @ 2015-08-28 22:11  独钓寒江雪kq  阅读(380)  评论(0编辑  收藏  举报