一文彻底掌握IO流

本文主要是对Java中IO知识点进行整理和学习。

一言以蔽之,IO 从名字上看input+output,输入到输出之间的管道就是io,主要就是学习各种流(字节流,字符流),最后会加入conmonsIO ,使用它简化我们的操作,提高效率。

1. IO介绍

相信大家刚开始就会被输入和输出给搞晕了,这个in和out主要是相对于程序,由文件进来是输入,由程序出去是输出,一切以程序为中心!

程序读取,程序写出,其实就是文件的拷贝。

java对io进行了大量的封装,我们主要学习这些类,当我们忘记了看看API就可以了
在这里插入图片描述

1.1分类有哪些呢?

按照功能来分

在这里插入图片描述

按照处理来分

在这里插入图片描述

1.2 如何看API

第一:看一看类的继承体系
第二:找构造器
  • 有构造器

因为权限: API>DEFAULT

  • 无构造器:要么是工具类,要么是静态方法,可以直接点出来
第三:方法(形参,功能,返回值)

1.3 Linux和win 的不同—名称分隔符的困惑

我们在win开发,但往往会在linux上运行,两个平台 的文件管理系统事不同 的,它主要体现在名称分隔符上,例如

public static void main(String[] args) {
		String path = "G:\\Major\\Eclipse\\coding\\Java_300\\images\\back1.jpg";
		System.out.println(File.separator);
		
		//1.习惯培养,使用左斜杠/
		 path = "G:/Major/Eclipse/coding/Java_300/images/back1.jpg";
		//2.常量拼接
		 path = "D:"+File.separator+"java300";
		
	}

1.4构建file对象

在这里插入图片描述

第一种直接丢名称,第二种父子名称,第三种父对象,子名称

1.5掌握基本方法

在这里插入图片描述

2 .如何操作文件夹

在这里插入图片描述

  • mkdir 必须保证父目录存在

  • mkdirs 如果上一级目录不存在,它就自动创建

  • 推荐使用后者,一劳永逸

    public static void main(String[] args) {
    		File dir = new File("G:/Major/Eclipse/coding/Java_300/dir/text");
    	  // 创建目录
    		boolean flag  = dir.mkdir();
    		System.out.println(flag);
    		flag = dir.mkdirs();
    		System.out.println(flag);
    
  • list 列出下一级名称

  • listFiles 列出下级File对象

    public static void main(String[] args) {
    		File dir = new File("G:/Major/Eclipse/coding/Java_300");
    	  // 创建目录
    		//boolean flag  = dir.mkdir();
    		//System.out.println(flag);
    		//flag = dir.mkdirs();
    		//System.out.println(flag);
    		
    		//获取下级名称
    		String[] subNames = dir.list();
    		for (String s:subNames){
    			System.out.println(s);
    		}
    	
    		//获取下级对象
    		File[] subFiles = dir.listFiles();
    		for (File s :subFiles){
    			System.out.println("下级对象"+s);
    		}
    		//所以盘符
    		File[] roots= dir.listRoots();
    		for (File r:roots){
    			System.out.println("盘符"+r);
    		}
    		
    	}
    

还记得我们之前学过的递归吗?

就是自己调用自己,注意不要忘了递归头需要有结束的条件。

我们接下来就要用递归来打印文件的子孙及目录和文件的名称

	public static void main(String[] args) {
		File dir = new File("G:/Major/Eclipse/coding/Java_300");
		printName(dir,0);
	}
	//打印所有目录及文件名称
	/**
	 * 
	 * @param src
	 * @param deep文件的深度,更加有层次感
	 */
	public static void printName(File src,int deep){
		for(int i=0;i<deep;i++){
			System.out.print("-");
		}
		System.out.println(src.getName());
		if(!src.exists()||src==null){
			return;
		}else if(src.isDirectory()){
			for (File s : src.listFiles()){
				//此处不是打印,继续递归,如果为零就直接返回了
				printName(s,deep+1);
			}
		}
	}

同理可以统计文件夹的大小等等

3.字节流

4. 字符流

5. IO_CommonsIO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值