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);
    				}
    			}
    		}	
    	}	
    }
    
  • 相关阅读:
    使用TransactionScope实现多数据库连接事务操作
    zabbix_agentlinux下的安装
    (转)Zabbix AgentWindows平台配置指导
    使用SpringSide 3.1.4.3开发Web项目的全过程(上)
    应用开发中数据字典项设计实现方案
    Oracle Top N 和 Oracle中的limit问题解决方案
    Struts 2.0的codebehinde插件应用简述
    PropertyUtils和MethodUtils使用
    Log4j基本使用方法
    Quartz从入门到进阶
  • 原文地址:https://www.cnblogs.com/lomon6/p/10764069.html
Copyright © 2011-2022 走看看