【java基础】13-IO流(1)

1.IO的概述

IO流概述和分类
要点
IO介绍

\1. IO流的理解(数据在不同的设备之间流动,例如:内存,硬盘,) 硬盘可以持久化存储.

​			读取文件内容
​			 写入文件

2.输入流,输出流以什么为参照?? 
		以内存为标准
		读取文件(硬盘---->内存)  输入流
		写入文件(内存----->硬盘) 输出流

2.IO的分类

IO分类1
IO分类2

3.字节流-字节输出流快速入门

字节输出流demo
要点

\1. 流体系
    字节流
    ​		输入流 InputStream(抽象)
    ​		输出流 OutputStream(抽象)
                  FileOutputStream 具体类
    ​字符流
    ​		输入流 Reader
    ​		输出流 Writer 
\2. 流的构造方法
    		FileOutputStream(String/File)
\3. 流的大体操作步骤(1.创建流(new) 2.操作流(/). 3.关闭流(close))

4.字节流-注意事项

字节流写数据

5.字节流–一次写多个数据

  • 写数据的方法分类
方法名说明
void write(int b)将指定的字节写入此文件输出流 一次写一个字节数据
void write(byte[] b)将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
void write(byte[] b, int off, int len)将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流 一次写一个字节数组的部分数据
  • 代码示例
public class FileOutputStreamDemo02 {
    public static void main(String[] args) throws IOException {
        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
        //FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件
//        FileOutputStream fos = new FileOutputStream(new File("myByteStream\\fos.txt"));

        //void write(int b):将指定的字节写入此文件输出流
//        fos.write(97);
//        fos.write(98);
//        fos.write(99);
//        fos.write(100);
//        fos.write(101);

//        void write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流
//        byte[] bys = {97, 98, 99, 100, 101};
        //byte[] getBytes():返回字符串对应的字节数组
        byte[] bys = "abcde".getBytes();
//        fos.write(bys);

        //void write(byte[] b, int off, int len):将 len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流
//        fos.write(bys,0,bys.length);
        fos.write(bys,1,3);

        //释放资源
        fos.close();
    }
}

6.字节流–两个问题

字节流两个问题
解决问题代码示例
要点

  1. 字节输出流的追加写入
    字节输出流的追加写入
  2. 写入换行符
System.lineSeparator(); //返回系统换行符

7.字节流-try…catch捕获异常

  • 异常处理格式
    • try-catch-finally
	    try{
			可能出现异常的代码;    
		}catch(异常类名 变量名){
			异常的处理代码;
		}finally{
			执行所有清除操作;
		}
  • finally特点
    • 被finally控制的语句一定会执行,除非JVM退出
  • 代码示例
public class FileOutputStreamDemo04 {
    public static void main(String[] args) {
        //加入finally来实现释放资源
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("myByteStream\\fos.txt");
            fos.write("hello".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

8.字节流–小结

字节流小结
要点

1.流体系
	OutputStream: 写入字节
	构造方法:		
	FileOutputStream(String/File)
	成员方法:
	1 void write(int b) 一次写一个字节数据
    2 void write(byte[] b) 一次写一个字节数组数据
	3 void write(byte[] b, int off, int len) 一次写一个字节数组的部分数据		
	4 close(); 关闭流,释放资源
			
	InputStream: 读取字节
	构造方法:
	FileInputStream(String/File)
		
2.流的操作步骤
    创建流
    操作流
    关闭流

9.字节流–字节输入流基本学习

字节输入流demo

10.字节流-读多个字节(循环读取)

循环读字节demo

11.字节流–文件复制

IO流文件复制demo
文件复制读写原理

12.字节流-定义小数组拷贝

核心方法
小数组拷贝核心方法

13.字节流-小数组拷贝原理

字节流-小数组拷贝原理

14.缓冲流-一次读写一个字节代码实现

字节缓冲流
字节缓冲流概念
要点

	理解下缓冲流
​				缓冲流 = 基本流 + 缓冲区
​			    效率高

​       缓冲流的构造方法
				BufferedInputStream(InputStream in):默认缓冲区大小
				BufferedOutputStream(OutputStream out)
        方法和普通流一样

代码示例

//1. 创建对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(原始文件路径));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(目标文件路径));
//2. 读写数据
int b;
while((b = bis.read())!=-1){
    bos.write(b);
}
//3. 释放资源
bis.close();
bos.close();

15.缓冲流-一次读写一个字节原理

缓冲流一次读一字节原理

16.缓冲流-一次读写一个字节数组原理

缓冲流-一次读写一个字节数组原理

17.字节流小结

1.流的体系

	InputStream(抽象类): 读取
	
	构造方法:
			
	FileInputStream(String/File)
	BufferedInputStream(InputStream):高效流 = 基础流  + 缓冲区
	
	成员方法:
	
	1 int read() 一次读一个字节数据
	2 int read(byte[] b) 一次读一个字节数组数据 

	OutputStream(抽象类):写入
	
	构造方法:
	
	FileOutputStream(String/File)
    BufferedOutputStream(OutputStream):高效流 = 基础流 + 缓冲区
    
	成员方法:
	
	1 void write(int b) 一次写一个字节数据
    2 void write(byte[] b) 一次写一个字节数组数据
	3 void write(byte[] b, int off, int len) 一次写一个字节数组的部分数据		
	4 close(); 关闭流,释放资源
					
2.流的操作步骤

   1.创建流
   2.操作流(读取/写入)
   3.释放资源
   
3.拷贝文件的四种方式
   
   	字节流复制任意文件,一次读写一个字节
    字节流复制任意文件,一次读写一个字节数组
    字节缓冲流复制任意文件,一次操作一个字节
    字节缓冲流复制任意文件,一次操作一个字节数组

拷贝文件的四种方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值