【探索Java世界04】Java的IO流

一、IO概述

  • I/O 输入/输出流(数据流动)

  • 数据流动的方向: 读数据(输入Input) 写数据(输出Ootput)

  • 文件流

  • 缓冲流

  • 字符流

  • 对象流

二、文件流

  • 读取文件中的信息in,将信息写入文件中out
  • 文件流按照读取或写入的单位(字节数)大小区分
  • 字节型文件流(1个字节)
    ​ FileInputStream/FileOutputStream
  • 字符型文件流(2个字节–1个字符)
    ​ FileReader/FileWriter

三、缓冲流

  • 缓冲流(高级流)
	在管道内增加缓存的数据
	让我们使用流读取的文字更加流畅
	高级流---->创建通过低级流
	BufferedInputStream/BufferedOutputStream
	BufferedReader/BufferedWrite
	
	BufferedInputStream
	构建方式:使用低级流构建
	基本使用与低级流的方法完全一样
	
	BufferedOutputStream
	构建方式:使用低级流构建,注意缓冲流构建的时候没有boolean类型的参数
	基本使用与低级流的方法完全一样
	
	BufferedReader
		String = readLine();//读一行信息

	BufferedWrite
		write(String );
		newLine();

四、字符流

1.字节型文件输入流

  • FileInputStream
	1、java.io包
	2、继承关系 继承InputStream类,字节流输入的父类
	3、创建对象
		调用一个带File类型的构造方法
		调用一个带String类型的构造方法
	4、常用的方法
		int code = read();每次从流管道中读取一个字节,返回字节的code码
		int count = read(byte[])每次从流管道中读取若干个字节,存入数组内,返回有效元素个数
		int count = available();返回流管道中还有多少缓存的字节数
		long = skip(long n);跳过几个字节读取
			一般多线程利用
		void = close();将流管道关闭---必须要做,最好放在finally里,注意代码的健壮性,判断严谨

2.字节型文件输出流

  • FileOutputStream 将数据写入文件中
	1、java.io包
	2、继承OutputStream类 所有字节型输出流的父类
	3、创建对象
		调用一个带File参数 还有带File boolean两个参数的重载
		调用一个带String参数 还有带String boolean两个参数的重载
	4、常用方法
		write(int code);将给定code对应的字符写入文件,也可以写‘=write(byte[]);将数组中的全部字节写入文件,也可以使用String str然后通过str.getByte()转化		为byte[]数组,
		flush();将管道内的字节推入(刷新)文件
		close();注意在finally中关闭

3.字符型文件流(2个字节–1个字符)

  • FileReader
	只能操作纯文本文件
	FileReader
	1、java.io包
	2、继承 InputStreamReader Reader
	3、构造方法
	4、常用方法
		read()	read(cher[] )
  • FileWriter
	1、java.io包
	2、继承 OutputStreamWrite Write
	3、构造方法
		调用一个带File参数 还有带File boolean两个参数的重载
		调用一个带String参数 还有带String boolean两个参数的重载
	4、常用方法
		write(int)
		write(char[])
		write(string)
		flush() close()

五、对象流

  • 对象流(高级流)
  • 对象的序列化指的是:将一个完整的对象拆分成字节碎片,记录在文件中
  • 对象的反序列化指的是:将文件中记录的对象随便反过来组合成一个完整的对象
  • 如果想要将对象序列化到文件中
	需要让对象实现Serializable接口
	是一个示意性接口
	同时为了让对象可以反序列化
	需要让对象中多存一个属性 private long serialVersionUID = 任意写L;
  • 如果想要将对象反序列化
	需要给对象提供一个序列化的版本号 

六、文件File类

  • File类---->与电脑上的文件或文件夹产生一一对应的映射关系
  • file是一个类
  • java.io包
  • 文件或目录路径的抽象表示形式
  • file与真实硬盘中的文件或文件夹不是一个东西
	file是内存中的一个对象------映射-----硬盘上的文件或文件夹
  • file类中常用的方法
	canRead() canWrite() isHidden() isFile() isDirectory()
    length()获取文件中字节的个数
    lastModified()获取文件最后的修改时间---->毫秒值
    String = getAbsolutePath()获取文件的绝对路径
    绝对路径	相对路径
    绝对路径可以通过完整的字符串定位盘符,文件夹,文件
    相对路径没有盘符的写法,在当前工程(项目)所在的位置找寻
    String = getName()获取文件的名字
    boolean = createNewFile()创建新的文件
    boolean = mkdir() 创建新的文件夹,外层没有,不能创建
    boolean = mkdirs() 创建新的文件夹,外层没有,可以自动创建
    String = getParent() 获取当前file的父亲file名字
    File = getParentFile()获取当前file的父亲file对象
    String[] = list()获取当前file的所有儿子名字
    File[] = listFiles()获取当前file的所有儿子对象
    boolean = delete() 删除文件或空的文件夹,不能删除带元素的文件夹
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值