2021-04-01

本文介绍了Java中的四大抽象类InputStream、OutputStream、Reader和Writer,分别用于处理字节输入流、字节输出流、字符输入流和字符输出流。通过实例展示了如何使用OutputStream的子类FileOutputStream进行文件数据的写入操作,包括基本的write方法和特定参数的write方法。同时,强调了无论是字节流还是字符流,底层传输的都是字节。
摘要由CSDN通过智能技术生成

四大抽象类:字节输入流(对应InputStream)字节输出流(对应OutputStream)字符输入流(对应Reader)字符输出流(对应Writer)

引入概念:
数据源:提供数据的原始媒介,如:数据库、文件、其他程序、内存、网络连接、IO设备。
原设备:为程序提供数据,对应输入流。
目标设备:程序数据的目的地,一般对应输出流。

IO的分类

  1. 流向:(相对程序而言)
    输入流(read) input
    输出流(write) output
  2. 传输内容:
    字节数据:图片、音频等
    字节输入流:InputStream
    字节输出流:OutputStream
    字符数据:如abcd这种单个字符
    字符输入流:Reader
    字符输出流:Writer
    但是要清楚不管是字节流还是字符流,底层流动的都是字节!(字符是字节加编码构成的)
  3. 按处理对象不同分类
    字节流:可以直接从数据源或者目的地读写数据
    处理流:不直接连接到数据源的流,又叫包装流

先说

OutputStream

对应方法

  1. close()关闭此输出流并释放与次有关的所有系统资源。 flush()刷新此输出流并强制写出所有缓冲的输出字节。
  2. write(byte[] b)将b.length个字节从指定的byte数组写入此输出流。
  3. write(byte[] b,int off,int len)将指定byte数组中从偏移量off开始的len个字节写入此输出流
  4. wirte(int b)将指定字节写入此输出流。

OutputStream的子类:
FileOutputStream(Sting name);
创建一个向具有指定名称的文件中写入数据的输出文件流
FileOutputStream(File file);
创建一个向指定File对象表示的文件中写入数据的文件输出流
步骤:

  1. 创建流对象
  2. 把数据变成字节数据
  3. 用管道传输数据到文件
  4. 关闭管道
    下面是一个小实例:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class FileDome8 {
	public static void main(String[] args) throws Exception {
		//调用构造方法创建流对象FileOutputStrem(Sting name)
		//当有文件时流对象向对象输出数据,没有此名字的文件对象时,流对象会帮我们创建一个
		FileOutputStream fot=new FileOutputStream("bb.txt");  //创建流对象以及文件对象,并将流管道接到文件上
		String name="Hellow IO!";//创建要写入的字符数据
		byte[] bytes=name.getBytes();     //调用String类里面的方法,将字符数据转化为字节数据。
		//向文件中写入数据
		fot.write(bytes);
		//关闭管道
		fot.close();
	}
}

代码运行后,会在我的工程根目录下创建一个bb.txt文件,并将数据“Hellow IO!”写入文件中.(如下图)
在这里插入图片描述
在这里插入图片描述
下面演示另一种构造方法以及writre()方法的使用:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class FileOutputDome {
	public static void main(String[] args) throws Exception {
		File file=new File("bb//aa.txt");
		FileOutputStream fot1=new FileOutputStream(file);
		String name1="abcdefgh";
		byte[] bytes=name1.getBytes();
		fot1.write(bytes, 2, 5);
		fot1.close();
	}
}

此构造方法是以文件对象为参数,write方法是将字节数组的指定数据写入文件中(另一个write方法时是将单个字节数据写入文件中),运行结果如下:
在这里插入图片描述
从字节数组的二号元素开始写入五个数组元素。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值