zoukankan      html  css  js  c++  java
  • File

     

    File类对象可以代表一个路径, 此路径可以是文件也可以是文件夹, 该类方法可以对这个路径进行各种操作

    File用来将文件或者文件夹封装成对象
    方便对文件与文件夹的属性信息进行操作。
    File对象可以作为参数传递给流的构造函数。

    创建对象
    给File类构造函数传一个String类型的路径就可以创建对象
    路径分为两种: 绝对路径, 相对路径
    绝对路径: 从盘符开始, 是一个固定的路径
    相对路径: 不从盘符开始, 相对于某个位置. 在Eclipse中的Java工程如果使用相对路径, 那么就相对于工程根目录. cmd则相对应于当前目录.

    常用方法
    		boolean exists() 		判断是否存在
    		boolean isAbsolute();	     是否是绝对路径
    		boolean isDirectory();	     是否是文件夹
    		boolean isFile();		是否是文件
    		boolean isHidden();		是否是隐藏
    		
    		getAbsolutePath();		获取绝对路径
    		getFreeSpace();			获取当前盘符剩余空间
    		getTotalSpace();		获取当前盘符总空间
    		getUsableSpace();		获取当前盘符可用空间
    		getParent());			获取父级路径
    		getName());			获取文件名
    		
    		setReadable(false);		设置是否可读
    		setWritable(false);		设置是否可写
    		setExecutable(false);	     设置是否可执行
    		canRead();			是否可读
    		canWrite();			是否可写
    		canExecute();			是否可执行
    		
    		setLastModified();		设置文件的最后修改时间
    		lastModified();			获取文件的最后修改时间
    		
    		createNewFile()			创建文件
    		mkdir();			创建文件夹(仅一级)
    		mkdirs();			创建文件夹(父级不存在也创建)
    		
    		renameTo();			改名, 可以移动文件
    		delete()			删除, 文件可以直接删除, 文件夹只能删空的
    		length()			文件大小
    	
    		String[] list() 
    		File[] listFiles()  
    

    String[] list

    获取当前目录下的所有文件和文件目录,包括隐藏的,如果File封装的是一个文件,那么返回的数组为null,所以最好做一个判断
    File[] listFiles();

    获取的是当前目录下文件或者文件夹对应的对象
    如果仅获取文件名称,就用list方法.如果还要获取文件的其他信息,最好使用listFiles.因为可以获取到文件对象,这样就可以通过文件对象的方法,获取到其他的内容,如文件大小,修改时间等

    public class Test {
    
    	/**
    	 * 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
    	 */
    	public static void main(String[] args) {
    		File dir = getDir();
    		getLevelDir(dir,0);
    	}
    
    	public static File getDir() {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入文件夹路径:");
    		while(true) {
    			String line = sc.nextLine();	//将录入的路径存储在line中
    			File dir = new File(line);
    			if(!dir.exists()) {
    				System.out.println("您输入的文件夹路径不存在,请重新输入一个文件夹路径:");
    			}else if(dir.isFile()) {
    				System.out.println("您输入的是文件路径,请输入一个文件夹路径:");
    			}else {
    				return dir;
    			}
    		}
    	
    	public static void getLevelDir(File dir,int lev) {
    		File[] subFiles = dir.listFiles();	
    		for (File subFile : subFiles) {
    			for(int x = 0; x < lev; x++) {	//定义层级目录,在根目录下的文件或文件夹加table键,多一级就多加一个table键
    				System.out.print('	');
    			}
    			System.out.println(subFile);	//将该目录的所有文件和文件夹都打印
    			if(subFile.isDirectory()) {		//只要是文件夹就继续调用自己,并把层级目录+1
    				getLevelDir(subFile,lev + 1);
    			}
    		}
    	}
    }
    

    总结:

    字节流
      FileInputStream, FileOutputStream, 自定义数组拷贝文件
      BufferedInputStream, BufferedOutputStream, 内置缓冲区拷贝文件
    字符流
      FileReader, FileWriter
      InputStreamReader, OutputStreamWriter
      BufferedReader, BufferedWriter

    File

    利用字符和字节流对文件进行操作

     

  • 相关阅读:
    BZOJ 3252: 攻略(思路题)
    BZOJ 2821: 作诗(Poetize)(分块)
    BZOJ 2597: [Wc2007]剪刀石头布(费用流)
    BZOJ 1565: [NOI2009]植物大战僵尸(网络流+缩点)
    BZOJ 1927: [Sdoi2010]星际竞速(费用流)
    BZOJ 5120: [2017国家集训队测试]无限之环(费用流)
    洛谷 5205 【模板】多项式开根
    LOJ 2737 「JOISC 2016 Day 3」电报 ——思路+基环树DP
    LOJ 2736 「JOISC 2016 Day 3」回转寿司 ——堆+分块思路
    bzoj 2216 [Poi2011]Lightning Conductor——单调队列+二分处理决策单调性
  • 原文地址:https://www.cnblogs.com/sooper/p/3415986.html
Copyright © 2011-2022 走看看