zoukankan      html  css  js  c++  java
  • java基础:12.2 文本I/O(二)File类、遍历

     
    在12.1 小节我对IO有了基本的认识。这一节主要是整理一下

    1. File 类

    首先,File属于的类:java.io.file类

    斜杠/ 是Java的目录分隔符。 在Windows 中目录的分隔符是反斜杠()。

    File 对象封装了文件或路径的属性,但是它既不包括创建文件的方法,也不包括从/ 向文件读/ 写数据(称为数据输入输出,简称I/O) 的方法。为了完成I/O 操作,需要使用恰当的Java I/O 类创建对象。这些对象包含从/ 向文件读/ 写数据的方法。文本文件本质上是存储在磁盘上的字符。

    		//绝对路径
            File f1 = new File("d:/Java");
            System.out.println("f1的绝对路径:" + f1.getAbsolutePath());  //f1的绝对路径:d:Java 
            // 相对路径,相对于工作目录,如果在eclipse中,就是项目目录
            File f2 = new File("java.exe");
            System.out.println("f2的绝对路径:" + f2.getAbsolutePath());  //f2的绝对路径:F:javaDay0312Charp19java.exe
            // 把f1作为父目录创建文件对象
            File f3 = new File(f1, "java.exe");
            System.out.println("f3的绝对路径:" + f3.getAbsolutePath()); //f3的绝对路径:d:Javajava.exe
    

    执行完上面的程序后,去对应的路径下我们并不能找到java.exe文件。这是为什么呢??

    因为:构建一个File 实例并不会在机器上创建一个文件。不管文件是否存在,都可以创建任意文件名的File 实例。可以调用File 实例上的exists()方法来判断这个文件是否存在。

            File f = new File("java.exe");
            System.out.println("f的绝对路径:" + f.getAbsolutePath());
            System.out.println("f的当前文件是" + f );
            System.out.println("判断是否存在:"+ f.exists());
            System.out.println("判断是否是文件夹:"+f.isDirectory());
            System.out.println("判断是否是文件:"+f.isFile());
            System.out.println("获取文件的长度:"+f.length());
           
            long time = f.lastModified();
            Date d = new Date(time);
            System.out.println("获取文件的最后修改时间:"+d);       
            f.setLastModified(0);  //设置文件修改时间为1970.1.1 08:00:00
              
            //文件重命名
            File f1 =new File("C++.exe");
            f.renameTo(f1);
            System.out.println("把java.exe改名成了C++.exe");        
            System.out.println("注意: 需要在相应路径下确实存在java.exe文件,才可以看到对应的文件长度、修改时间等信息");
    

     
    列举一些常用方法 File f = new File("d:/X1/xxx/java.exei");

    f.list(); 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
    File[]fs= f.listFiles(); // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
    f.getParent(); // 以字符串形式返回获取所在文件夹
    f.getParentFile(); // 以文件形式返回获取所在文件夹
    f.mkdir(); // 创建文件夹,如果父文件夹xxx不存在,创建就无效
    f.mkdirs(); // 创建文件夹,如果父文件夹xxx不存在,就会创建父文件夹
    f.createNewFile(); // 创建一个空文件,如果父文件夹xxx不存在,就会抛出异常
    f.getParentFile().mkdirs(); // 所以创建一个空文件之前,通常都会创建父目录
    f.listRoots(); // 列出所有的盘符c: d: e: 等等
    f.delete(); // 刪除文件
    f.deleteOnExit(); // JVM结束的时候,刪除文件,常用于临时文件的删除

    遍历当前文件夹

    package FileIO;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
    
    public class Test {
      
        public static void main(String[] args) {
            File f = new File("f:/HSM/");
            File[] fs = f.listFiles();
            if(null==fs)
                return;
            long minSize = Integer.MAX_VALUE;
            long maxSize = 0;
            File minFile = null;
            File maxFile = null;
            for (File file : fs) {
                if(file.isDirectory())
                    continue;
                if(file.length()>maxSize){
                    maxSize = file.length();
                    maxFile = file;
                }
                if(file.length()!=0 && file.length()<minSize){
                    minSize = file.length();
                    minFile = file;
                }
            }
            System.out.printf("最大的文件是%s,其大小是%,d字节%n",maxFile.getAbsoluteFile(),maxFile.length());
            System.out.printf("最小的文件是%s,其大小是%,d字节%n",minFile.getAbsoluteFile(),minFile.length());
       
        }
    }
    

    遍历所有子文件夹

    package FileIO;
    import java.io.File;
    public class Test {
    	
    	   static long minSize = Integer.MAX_VALUE;
    	    static long maxSize = 0;
    	    static File minFile = null;
    	    static File maxFile = null;
    	      
    	    //使用递归来遍历一个文件夹的子文件
    	    public static void listFiles(File file){
    	        if(file.isFile()){
    	            if(file.length()>maxSize){
    	                maxSize = file.length();
    	                maxFile = file;
    	            }
    	            if(file.length()!=0 && file.length()<minSize){
    	                minSize = file.length();
    	                minFile = file;
    	            }
    	            return;
    	        }
    	          
    	        if(file.isDirectory()){
    	            File[] fs = file.listFiles();
    	            if(null!=fs)
    	            for (File f : fs) {
    	                listFiles(f);
    	            }
    	        }
    	    }
    	   
    	    public static void main(String[] args) {
    	        File f = new File("c:\windows");
    	        listFiles(f);
    	        System.out.printf("最大的文件是%s,其大小是%,d字节%n",maxFile.getAbsoluteFile(),maxFile.length());
    	        System.out.printf("最小的文件是%s,其大小是%,d字节%n",minFile.getAbsoluteFile(),minFile.length());	   
    	    }
    }
    
  • 相关阅读:
    WebRTC之完整搭建Jitsi Meet指南
    使用Jibri进行Jitsi Meet视频录制
    完整开源免费视频会议Jitsi-meet安装教程
    iOS聊天起泡(背景图片被拉伸不变形)----转载--待验证
    技术人对赚钱的思考与摸索
    模板引擎的思考
    SpringBoot单文件与多文件上传
    数据库被删之反思
    分布式配置中心之思考
    正版office产品密钥-激活码
  • 原文地址:https://www.cnblogs.com/l20902/p/10610887.html
Copyright © 2011-2022 走看看