IO流总结

IO的体系

在这里插入图片描述
1:IO就是in(输入)和out(输出),指的是应用程序和外部设备之间的数据传递,常见的外部设备包括了文件和管道以及网络连接。

2::Stream,它是一个抽象的概念,指一连串的数据(字节或者字符)以先进先出的方式发送信息的通道。

3:流的特性
1)先进先出,最先写入的输出流的数据最先被输入流读取到。
2)顺序存取,可以一个接一个的往流中写入一串字节,读出时也将按照写入的顺序读取一串字节,不能够随机的访问中间的数据(RandomAccessFile除外)。
3)只读或者只写,每个流只能是输入流或者是输出流,只能具有一种功能,不能够同时具备两种功能。输入流只进行读操作,输出流只进行写操作。

IO流的分类

分类图:
在这里插入图片描述

IO流的分类方式有三种:

1,按数据流的方向来分:输入流和输出流
在这里插入图片描述

输入与输出是相对于内存而言的,读取文件的输入流,写文件是输出流

2,按处理数据的单位(大小)来分:字节流和字符流
在这里插入图片描述
字节流和字符流的用完都差不多,区别在于两者的操作单元不同,字节流操作的数据单元是8位的字节,字符流操作的数据单元是16位的字符。

2,按功能来分:节点流和处理流
节点流:直接操作数据读写的流类,例如:FileInputStream
处理流:对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大,灵活的读写功能。例如:BufferedInputStream

文件(File)

File类是用来操作文件的类, 提供一些方法(api)来操纵文件和获取文件的信息,但是他不能够操作文件中的数据。

在这里插入图片描述

1.常用的方法:
createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分的创建一个新的空文件。
delete():删除创建的文件。
getAbsoluteFile():返回绝对路径名。
getAbsolutePath():返回绝对路径名字符串。
length():返回文件的长度
mkdir():创建此抽象路径名指定的目录。

代码实例:
1.创建或者删除文件…操作

public static void main(String[] args) throws IOException {
   
		//File file = new File("c:\\huhu.test"); //此方式为在windows系统下的创建对象方式(朝右的\)
		//File file = new File("c:/huhu.test"); //此方式为在Linux系统下的创建对象方式(朝左的/)
		 
		//在不清楚当前的环境下创建文件对象:
		File file = new File("D:"+File.separator+"huhu.test");
		
		file.createNewFile();  //文件的创建api
		
		//file.delete(); //文件的删除a
		
		System.out.println(file.isHidden()); //文件是否被隐藏
		
	}

2.查找指定盘符下的文件和文件夹

public static void main(String[] args) {
   
		 //找出E盘下的文件和文件夹
		File f = new File("E:");
		for (File fs : f.listFiles()) {
   
			if (fs.isDirectory()) {
    // 文件夹
				System.out.println("文件夹:" + fs.getName());
			} else {
    // 文件
				System.out.println("文件:" + fs.getName());
			}
		}
	}

3.找出指定盘符下的所有目录中的文件

/**
	 * 找出E盘下的所有文件
	 */
		public static void main(String[] args) {
   
        
		findFile(new File("E:"));
	}
	public static void findFile(File f) {
   
		if(f!=null && f.isFile()) {
     //路径不为空且是文件时
			System.out.println(f.getName()); //打印出f的名称
			return;
		}
		File[] list = f.listFiles();  
		if(list!=null) {
   
			for(File fs:list ) {
   
				findFile(fs); //利用递归
			}
		}
	}

字节流

字节流的两个基类InputStream和OutputStream是两个抽象类,所有具体的字节流实现类都是分别继承了这两个类。
在这里插入图片描述
类的说明:(以InputStream来说明)
1.InputStream:它是所有字节输入流的抽象基类,抽象类不能被实例化,实际上是作为模板而存在的,为了所有实现类定义了处理输入流的方法。
2.FileInputStream:文件输入流,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值