• JAVA:IO流——File类


    1、掌握File 类的作用

    2、可以使用File 类中的方法对文件进行操作

    所有的 io 操作都保存在 java.io 包中。

    构造方法:public File (String pathname) 

    直接根据路径找到文件。

     

    1. 创建一个新文件

    创建文件: public boolean createNewFile() throws IOException

    假设:现在要在d 盘上创建一个doc.txt 文件。

    1.  import java.io.*;
    2. import java.io.IOException;
    3. public class FileDemo{
    4.   File file=new File("d:"+File.separator+"doc.txt");  //     ("d:\doc.txt")分隔符的使用,两个反斜杠
    5. try{
    6.   file.createNewFile();
    7. }catch(IOException e){
    8.   e.printStackTrace();
    9. }
    10. } 

    在各个操作系统中,实际上路径的分隔符是不一样的,例如:

    windows 中使用反斜杠:“”

    linux 中使用正斜杠:“/”

    如果想让 JAVA 程序的可移植性继续保持,则最好根据所在的操作系统来自动使用分隔符File.separator

     File.pathSeparator与File.separator的区别?

    前者为分号 ; 后者为冒号 :

    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo02{  
    4.     public static void main(String args[]){  
    5.         System.out.println("pathSeparator:" + File.pathSeparator) ; // 调用静态常量  
    6.         System.out.println("separator:" + File.separator) ; // 调用静态常量  
    7.     }  
    8. };  

    如果想让 JAVA 程序继续保持可移植性,那么在编写路径的时候就应该使用 File 类中的常量。

     注意:在操作文件的时候一定要注意分隔符,使用 File.separator 表示。

    2. 删除一个指定的文件

    public boolean delete()    将之前建立的文件,删除掉。先判断文件是否存在 

    在File 类中可以使用 exists() 方法判断一个文件是否存在:public boolean exists() 

    import java.io.File;
    import java.io.IOException;
    public calss FileDemo{
    public static void main(String args[]){
    File file=new File("d:"+File.separaor+"doc.txt");  //找到文件路径
    if(file.exists()){  //如果文件存在
    file.delete();
    }
    }
    }

    3.综合创建、删除文件的操作

    现在以下一个要求:给定一个路径,如果此文件存在,则删除;如果文件不存在则创建一个新的文件。

    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo06{  
    4.     public static void main(String args[]){  
    5.         File f = new File("d:"+File.separator+"test.txt") ;     // 实例化File类的对象  
    6.         if(f.exists()){ // 如果文件存在则删除  
    7.             f.delete() ;    // 删除文件  
    8.         }else{  
    9.             try{  
    10.                 f.createNewFile() ;     // 创建文件,根据给定的路径创建  
    11.             }catch(IOException e){  
    12.                 e.printStackTrace() ;   // 输出异常信息  
    13.             }  
    14.         }  
    15.     }  
    16. };  

    从程序的运行结果中可以发现,所有的操作并不会立刻执行,因为JAVA 是通过JVM 与底层进行交互的,所以所有的操作需要经过JVM完成,那么就可能产生延迟。

    提示:对于文件的后缀,是可有可无的。

    4.创建一个文件夹

    使用mkdir() 方法创建一个文件夹   public boolean mkdir()

     
    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo07{  
    4.     public static void main(String args[]){  
    5.         File f = new File("d:"+File.separator+"mldn") ;     // 实例化File类的对象  
    6.         f.mkdir() ; // 创建文件夹  
    7.     }  
    8. };  

    5.列出指定目录的全部文件

    如果现在给出了一个目录,则可以直接列出目录中的内容,但是列出的方法在File 类中存在两个:

    以字符串数组的形式返回:public String[] list()   返回路径下所有文件的名

    以 File 数组的形式返回: public File[] listFiles() 返回所以文件的路径

    操作一: 使用list() 列出全部内容
    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo08{  
    4.     public static void main(String args[]){  
    5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
    6.         String str[] = f.list() ;   // 列出给定目录中的内容  
    7.         for(int i=0;i<str.length;i++){  
    8.             System.out.println(str[i]) ;  
    9.         }  
    10.     }  
    11. };  
    操作二: 使用listFiles() 列出全部内容(带路径)
    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo09{  
    4.     public static void main(String args[]){  
    5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
    6.         File files[] = f.listFiles() ;  // 列出全部内容  
    7.         for(int i=0;i<files.length;i++){  
    8.             System.out.println(files[i]) ;  
    9.         }  
    10.     }  
    11. };  
    后者列出的是一个完整的路径,这样对于程序本身来说是很容易操作的。

    6.判断一个给定的路径是否是目录(即,是否是文件夹)

    在File 类中直接使用: public boolean isDirectory()
    取得文件的路径:   public boolean getPath()
     

    给定路径,判断是否是目录

    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo10{  
    4.     public static void main(String args[]){  
    5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
    6.         if(f.isDirectory()){    // 判断是否是目录  
    7.             System.out.println(f.getPath() + "路径是目录。") ;  
    8.         }else{  
    9.             System.out.println(f.getPath() + "路径不是目录。") ;  
    10.         }  
    11.     }  
    12. };  

    7、要求:列出指定目录的全部内容 

    如果给定了一个目录,则要求将此目录中的全部文件都列出来,但是列的时候还会存在子文件夹。

    应该采用递归的调用形式。 

    [java] view plaincopy
     
    1. import java.io.File ;  
    2. import java.io.IOException ;  
    3. public class FileDemo11{  
    4.     public static void main(String args[]){  
    5.         File my = new File("d:" + File.separator) ; // 操作路径  
    6.         print(my) ;  
    7.     }  
    8.     public static void print(File file){    // 递归调用  
    9.         if(file!=null){ // 判断对象是否为空  
    10.             if(file.isDirectory()){ // 如果是目录  
    11.                 File f[] = file.listFiles() ;   // 列出全部的文件  
    12.                 if(f!=null){    // 判断此目录能否列出  
    13.                     for(int i=0;i<f.length;i++){  
    14.                         print(f[i]) ;   // 因为给的路径有可能是目录,所以,继续判断  
    15.                     }  
    16.                 }  
    17.             }else{  
    18.                 System.out.println(file) ;  // 输出路径  
    19.             }  
    20.         }  
    21.     }  
    22. };  
  • 相关阅读:
    Linux C++ 网络编程学习系列(2)——多路IO之select实现
    Linux C++ 网络编程学习系列(1)——端口复用实现
    Linux c++ vim环境搭建系列(5)——vim使用
    Linux c++ vim环境搭建系列(4)——vim插件安装配置使用
    Linux c++ vim环境搭建系列(3)——Ubuntu18.04.4编译安装youcompleteme
    0512String类
    0511Object类和异常
    Leetcode--53. 最大子序和
    哥德巴赫猜想 Java实现
    面向对象案例-学生信息管理系统V1.1
  • 原文地址:https://www.cnblogs.com/kuangyuping/p/3463326.html
Copyright © 2020-2023  润新知