• 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. };  
  • 相关阅读:
    【JAVA笔记——道】JAVA对象销毁
    【JAVA笔记——道】并发编程CAS算法
    httpClientUtil的get请求
    python基础 day11 下 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业
    python基础 day11 上 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 事务 索引 python 操作mysql ORM sqlachemy学习
    Python基础 Day10 Gevent协程 SelectPollEpoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 RedisMemcached缓存 Paramiko SSH Twsited网络框架
    python基础 day9 进程、与线程区别 python GIL全局解释器锁 线程 进程
    python基础 day8 Socket语法及相关 SocketServer实现多并发
    python基础 day7 面向对象高级语法部分 异常处理 异常处理 Socket开发基础
    python基础 day6 面向对象的特性:封装、继承、多态 类、方法、
  • 原文地址:https://www.cnblogs.com/kuangyuping/p/3463326.html
Copyright © 2020-2023  润新知