JavaIO流(day1)

学习内容:

  1. IO流简介
    1.1 什么是IO
    1.2 数据源
    1.3 流的概念
    1.4 Java中四大IO抽象类
    1.5 Java中流的概念细分
    1.6 Java中IO流类的体系
  2. IO流入门案例
    2.1 第一个简单的IO流程序
    2.2改造入门案例

学习笔记:

1.IO流简介

1.1 什么是IO

Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。当不同的介质之间有数据交互的时候,JAVA就使用流来实现。

1.2 数据源

数据源Date Source,提供数据的原始媒介。常见的数据源有:数据库,文件,其他程序,内存,网络设备,IO设备等等。

数据源分为:源设备,目标设备

  • 源设备:为程序提供数据,一般对应输入流。
  • 目标设备:程序数据的目的地,一般对应输出流。

1.3 流的概念

流是一个抽象的动态的概念,是一串连续动态的数据集合。它是对输入输出设备的一种抽象理解,在java中,对数据的输入输出操作都是以“流”的方式进行的。“流”具有方向性,输入流、输出流是相对的。当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据到某个数据源目的地的时候也会开启一个输出流。数据源可以是文件、内存或者网络等。

注意:输入\输出流的划分是相对于程序而言的,并不是相对于数据源。

1.4Java中四大IO抽象

IO四大抽象类: InputStream、OutputStream、Reader、Writer

  • InputStream:字节输入的父类,数据单位为字节。
    • 常用方法:
      int read();从输入流中读取下一个字节
      viod close(); 关闭流
  • OutputStream:字节输出流的父类,数据单位为字节。
    • 常用方法:
      void write(int b); 将一个integer数组长度写入此流
      void flush(); 刷新此流
      void close(); 关闭该流并释放与之相关的所有资源
  • Reader:字符输入流的父类,数据单位为字符。
    • 常用方法:
      int read(); 读取单个字符。
      int read(char[] cbuf, int off , int len ); 将字符读入数组的某一部分。
      void close(); 关闭该流并释放与之相关的所有资源
  • Writer:字符输出流的父类,数据单位为字符。
    • 常用方法:
      void writer(); 创建一个字符流
      void flush(); 刷新此流
      void close(); 关闭流并释放与之相关的所有资源

注意:能用字节流不一定能用字符流,能使用字符流不一定能使用字节流。

1.5Java中流的概念细分

  • 按照处理的数据单元分类:

    • 字节流:以字节为单位获取数据,命名上以Stream结尾的流一般都是字节流。
    • 字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般都是字节流
  • 按处理对象不同分类:

    • 节点流:可以直接从数据源或目的地读写程序
    • 处理流:不直接连到数据源或目的地,是“处理流的流”,通过对其他流的处理提高程序的性能

1.6Java中IO流类的体系

在这里插入图片描述

2 IO流入门案例

2.1第一个简单的IO流程序

import java.io.FileInputStream;

public class day1 {

	public static void main(String[] args) {
		// 创建字节输入流对象
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("d:/a.txt");
			int s1 = fis.read();//打印输入字符w对应的ascll码的数值
			int s2 = fis.read();//打印输入字符y对应的ascll码的数值
			int s3 = fis.read();//打印输入字符m对应的ascll码的数值
			int s4 = fis.read();//因为文件内容已经读取完毕,则返回-1
			System.out.println(s1);
			System.out.println(s2);
			System.out.println(s3);
			System.out.println(s4);

		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {
					fis.close();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}

}

输出结果

119
121
109
-1

2.1改造入门案例

import java.io.FileInputStream;

public class day1 {

	public static void main(String[] args) {
		// 创建字节输入流对象
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("d:/a.txt");
			StringBuilder sb = new StringBuilder();
			int temp = 0;
			while((temp = fis.read()) != -1) {
				System.out.println(temp);
				sb.append((char)temp);
			}
			System.out.println(sb.toString());
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {
					fis.close();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}

输出结果:

119
121
109
wym

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值