zoukankan      html  css  js  c++  java
  • 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:ook1");  Χ  

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

    总结:推荐大家用"/""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:javatestjava,,相当于file1.toString()方法
    60 
    61 System.out.println(file2);//输出的结果为E:javatestjavajava.txt
    62 
    63 //B.输出绝对路径
    64 
    65 System.out.println(file1.getAbsolutePath());//E:javatestjava
    66 
    67 System.out.println(file2.getAbsolutePath());//E:javatestjavajava.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:javatestjava
    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);
                  }
            }            
          }
        }
  • 相关阅读:
    yii框架中关于控制器中filter过滤器和外部action的使用
    关于开启url的pathinfo模式
    关于java的上转型对象
    linux下svn用法
    inode和文件描述符区别
    mysql字段更改操作命令
    c语言中的const的作用及解析
    C语言结构体--位域
    enum枚举型
    C语言结构体
  • 原文地址:https://www.cnblogs.com/dukc/p/4768017.html
Copyright © 2011-2022 走看看