天天看点

java IO流File类IO分类File 类

File类

  • IO分类
    • 文件流
    • 缓冲流
    • 转化流
    • 打印流
    • 对象流
    • 随机存储流
  • File 类
    • 概念
    • 相对路径和绝对路径
    • 成员变量
    • 构造方法
    • 成员方法
      • 文件(夹)的创建(createNewFile,mkdirs)
      • 文件的删除
      • 文件的获取功能
      • 判断功能
    • 文件遍历(递归,加上过滤器,可以遍历指定格式的文件)
    • 文件过滤器

IO分类

  • 输入和输出动作称为IO操作。

文件流

  • FileInputStream
  • FileOutputStream
  • FileReader
  • FileWriter

缓冲流

  • BuffereInputStream
  • BuffereOutputStream
  • BuffereReader
  • BuffereWriter

转化流

  • InputStreamReader
  • OutputStreamWriter

打印流

  • PrintStream
  • PringWriter

对象流

  • DateInputStream
  • DateOutputStream

随机存储流

  • RandomAccessFile

File 类

概念

  • File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
  • File 将操作系统中的文件(fiel),目录(directory)和路径(path)封装成了File对象
  • File与系统无关的类

相对路径和绝对路径

  • 绝对路径:在系统中具有唯一性,从根目录一层一层的指向目标文件
  • 相对路径:路径之间的相对关系。

成员变量

  • pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串。(;)
  • separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。( win\ linux/ )

构造方法

  • File(String pathname) 将路径封装成File对象,对路径的存在与否不判断
  • File(String parent,String chile)优点:可以单独的操作父路径和子路径
  • File(File parent,String chile)优点:父路径是File可以调用File的方法
    File parent = new File("c:\\");
    		File file = new File(parent,"1.txt");
    		System.out.println(file);
               

成员方法

文件(夹)的创建(createNewFile,mkdirs)

  • createNewFile() 创建文件,如果创造的文件已经存在了,就不在创造了。
  • 代码示例:
    public static void fuction() throws IOException {
    	File parent = new File("c:\\");
    	File file = new File(parent,"1.txt");
    	boolean b= file.createNewFile();
    	System.out.println(b);	
    }
               
  • mkdir()创建一级文件夹,如果创造的文件夹已经存在了,就不在创造了。
  • mkdirs()创建多级文件夹,如果创造的文件夹已经存在了,就不在创造了。
    File file = new File("c:\\新建文件夹");
    boolean b= file.mkdir();
    System.out.println(b);
               

文件的删除

  • delete() 删除文件和文件夹,直接删除,不进回收站。
    File file = new File("c:\\新建文件夹");
    boolean b= file.delete();
    System.out.println(b);
               

文件的获取功能

  • getName() 返回路径中表示的文件或者文件夹名(最后部分)。
    File file = new File("c:\\新建文件夹//1.txt");
    String name = file.getName();
    System.out.println(name);
               
  • getPath() 将封装成file的对象转化成字符串。
  • length()
    File file = new File("E:\\软件安装包\\HBuilder.9.0.8.windows.zip");
    	long length = file.length();
    	System.out.println(length);
               
  • getAbsolutePath() 返回String 获取绝对路径
  • getAbsoluteFile() 返回File
  • getParent() 获取父路径 返回String
  • getParentFile()

判断功能

  • exists() 判断路径是否存在
    File file = new File("src");
    boolean b = file.exists();
    System.out.println(b);
               
  • isDirectory() 判断是否为文件夹对象。
  • isFile()判断是否为文件对象。
  • list()遍历File中的文件,只显示文件名称。String[]
    File file = new File("E:\\软件安装包");
    String[] str = file.list(); 
    for(String name:str) {
    System.out.println(name);
               
  • listFiles()遍历File中的文件,显示文件名称的全路径
  • listRoots()获取系统中所有的根目录信息。
    File[] file = File.listRoots();
    	for(File name:file) {
    		System.out.println(name);
    	}	
               

文件遍历(递归,加上过滤器,可以遍历指定格式的文件)

  • public static void getFileName(File file) {
    		if (file.isDirectory()) {
    			File[] fileArr = file.listFiles();
    			for (int i = 0; i < fileArr.length; i++) {
    				getFileName(fileArr[i]);
    			}
    		}
    		System.out.println(file);
    	}
    
               

文件过滤器

  • File类中重载的listFiles方法,并且接受指定的过滤器。
  • listFiles(FileFilter filter) 过滤器一个参数
  • listFiles(FilenameFilter filter) 过滤器两个参数
  • FileFilter/FilenameFilter没有自己已经实现的子类,必须自己实现此接口的子类,重写accept()方法
  • 代码lFileFilter: 用于抽象路径名的过滤器。
    实现接口
    class MyFilter implements FileFilter{
    	public boolean accept(File pathname) {
    //		return pathname.getName().endsWith(".zip");	
    //		return pathname.isDirectory();
    		return pathname.isFile();
    	}	
    }
    	
    public class Test {
    	public static void main(String[] args) {
    		File file = new File("E:\\软件安装包");		
    		func(file);	
    	}
    	
    	public static void func(File file) {	
    		File[] files = file.listFiles(new MyFilter());
    		for(File f:files) {
    			System.out.println(f);
    		}	
    	}
    	
    }