zoukankan      html  css  js  c++  java
  • File初识和练习

    File类

    注:可能有如下三种情况:文件、文件夹、不存在的文件或文件夹

    要知道的:在计算机里面的文件是存储在硬盘上,Java虽然需要和文件打交道,但是它是不可以直接对硬盘进行操作,而是通过虚拟机和我们的操作系统进行交互,所以File代表的是Java和文件的一种联系。因此这个文件可能存在也可能不存在,它是只是一个抽象的概念。

    File对象的构建

    //File f = new File(String path);直接构建
    File f1 = new File("E:/java笔记/java导读.png");
    //File f = new File(String parent,String child);父子构建
    File f2 = new File("E:/java笔记","java导读.png");
    //File f = new File(File p , String c);父对象子名称
    File f3 = new File(new File("E:/java笔记"),"java导读.png");
    

    File文件名、路径的获取

    /**
    * 获取File对象的名称
    * String name = f.getName();
    * 获取File对象的路径
    * String path = f.getPath();构建File对象若使用的是相对路径则返回相对路径反之返回绝对路径
    * String path = f.getAbsolutePath();返回File对象的绝对路径
    * String path = f.getPatent();返回File对象父级路径,如果没有则返回null
    */
    
    String name = f1.getName();
    System.out.println("f1的name:"+ name);//f1的name:java导读.png
    String path = f1.getPath();
    System.out.println("f1的path:"+path);//f1的path:E:java笔记java导读.png
    String pathParent = f1.getParent();
    System.out.println("f1的parent路径:"+pathParent);//f1的parent路径:E:java笔记
    
    

    文件的状态

    /**
    * 判断文件的状态
    * f.exists();
    * f.isFile();
    * f.isDirectory();
     */
    
    boolean exist = f1.exists();
    System.out.println("f1是否存在:"+exist);//f1是否存在:true
    boolean isFile = f1.isFile();
    System.out.println("f1是否是文件:" + isFile);//f1是否是文件:true
    boolean isDirectory = f1.isDirectory();
    System.out.println("f1是否是文件夹:" + isDirectory);//f1是否是文件夹:false
    

    文件的其他操作

    /**
     * 其他的信息
    * long s = f.length();返回的文件的字节数,当为0是有两种情况:一:文件字节数为0;二:是文件夹
    * Boolean b = file.createNewFile();当文件不存在是才创建成功
    * Boolean b = file.delete();删除已经存在的文件
    */
    System.out.println("f1的文件的字节数:"+ f1.length());
    File newFile = new File("E:/java笔记/1.txt");
    boolean isCreate = newFile.createNewFile();
    System.out.println("是否创建成功:"+isCreate);
    boolean delete = newFile.delete();
    System.out.println("是否删除成功:"+delete);
    

    创建文件夹

    /**
    * 创建文件夹:
    * boolean b = f.mkdir();必须确保上级目录存在,否则创建失败
    * boolean b = f.mkdirs();上级目录可以不存在,不存在则一同创建。
    */
    File file = new File("E:/java笔记/mkdirTest");
    boolean ismkdir = file.mkdir();
    System.out.println("file创建目录是否成功:"+ ismkdir);
    File file1 = new File("E:/java笔记/Test/mkdirsTest");
    boolean ismkdirs = file1.mkdirs();
    System.out.println("file2创建多级目录是否成功:"+ ismkdirs);
    

    列出下一级

    实战练习1:列出子孙级目录及名称

    思路分析:

    思路分析图:

    /**
     * @描述:递归打印子孙级目录和文件的名称
     */
    public class fileList {
    	public static void main(String[] args) {
    		File file = new File("E:/Linux笔记");
    		printName(file,1);
    	}
    	/**
    	 * 
    	 *@描述:打印
    	 * @param f 要进行显示的File对象
    	 * @param count 控制显示的格式
    	 */
    	public static void printName(File f, int count){
            //控制显示格式
    		for(int i = 0; i < count; i++){
    			System.out.print("-");
    		}
            //打印
    		System.out.println(f.getName());
            //递归头
    		if(f == null || !f.exists()){
    			return;
    		}else if(f.isDirectory()){
    			File[] lists = f.listFiles();
    			for(File listFile : lists){
                    //递归体
    				printName(listFile,count+1);
    			}
    		}
    	}
    }
    /*
    *bank
    *-Account.java
    *--Bank.java
    *---CheckingAccount.java
    *----Customer.java
    *-----SavingAccount.java
    *------TestBanking.java
    */
    

    实战练习2:列出文件及其子孙文件的总大小

    注意:在判定file对象存在并且不为空的情况下还有判定file是文件才可以计算大小,文件夹是没有的大小。(所谓“文件夹的大小也是有文件夹里面的文件的总大小”)。

    思路导图:

    	/**
    	 * 
    	 *@描述:计算文件内容的大小(也就是计算总文件的大小)
    	 * @param file
    	 */
    	public class list {
    		public static void main(String[] args) {
    			File file = new File("E:\Java workspace\exercise");
    			countLength(file);
    			System.out.println(length);
    	}
    
    	private static long length = 0;
    	public static void countLength(File file){
    		//判断File对象是否存在
    		if(file != null && file.exists()){
    			//存在:判断File对象是否是文件(只有是文件的情况下才能计算大小,目录是没有大小的)
    			if(file.isFile()){
    			length +=file.length();
    			}else{
    				//File对象存在但是不是文件:当File为目录,遍历其子孙并统计大小
    				File[] files = file.listFiles();
    				for(File f :files){
    					countLength(f);
    				}
    		}
    		
    	}
    }
    

    实战练习2_1:利用面向对象的思想计算文件夹的大小

    思维导图:

    public class countDir {
    		//存放目录文件的大小
    		long length = 0;
    		//文件的路径
    		String path ;
    		//构建File对象
    		File file ;
    		//初始化构造器
    		public countDir(String path) {
    			this.path = path;
                 //初始化源
    			this.file = new File(path);
                 //计算大小
    			count(this.file);
    		}
    		/**
    		 * @return the length
    		 */
    		public long getLength() {
    			return length;
    		}
    	/**
    	 * 
    	 *@描述:计算File对象大小
    	 * @param file
    	 */
    	public static void main(String[] args) {
    		countDir test = new countDir("E:/Java workspace/exercise/src/bank");
    		System.out.println("文件夹的大小为:"+test.getLength());
    	}
    
    	private void count(File file) {
    		if(file != null && file.exists()){
    			if(file.isFile()){
    				length += file.length();
    			}else{
    				File[] files = file.listFiles();
    				for(File f : files){
    					count(f);
    				}
    			}
    		}	
    	}	
    }
    
  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/lomon6/p/10764069.html
Copyright © 2011-2022 走看看