详述Java中的流

本文详细介绍了Java中的流,包括什么是流、Java中的IO流,具体分为字节流(FileInputStream, FileOutputStream)、字符流(FileWriter, FileReader)以及缓冲流(BufferedInputStream, BufferedReader)。内容涵盖了各种流的构造方法、常用方法及其应用场景,并通过实例演示了如何使用缓冲流提高文件传输效率,解决字符文件传输时可能出现的乱码问题。" 111680572,10294632,使用Springfox构建Swagger API文档,"['Spring', 'API开发', '文档工具']
摘要由CSDN通过智能技术生成

目录

 

一、什么是流?

二、Java中的流

(1)IO流

a、字节流

b、字符流

(2)缓冲流

a、字节流

b、字符流

(3)转换流


一、什么是流?

我们知道,计算机中的文件都有最小组成单元,这些最小单元无非是字节或字符,而我们知道,在Java程序中如果我们想实现一个文件的传输,必须先将文件拆分成小的组成单元,而传输的过程无非就是这些最小单元的流动,这些流动的最小单元就构成了“流”。站在Java程序的角度看,有输入和输出端,所以就有输入流和输出流:

当然,这里的传输宏观上来看实际上为拷贝,输入流用来读取,输出流用于拷贝写入。

二、Java中的流

(1)IO流

a、字节流

首先,要传输文件根据流的定义,我们知道,我们需要三样东西:用于读取输入流,用于储存数据搬运工,,用于写入数据输出流。

输入流常用方法:

InputStream抽象类是所有输入字节流类的直接或间接父类,FileInputStream是其重要子类:

  FileInputStream常用构造方法:

①FileInputStream(File file) :通过File对象创建FileInputStream对象。

②FileInputStream(String name) :通过文件(非“目录”)路径创建FileInputStream对象。

  FileInputStream常用方法:

①int read():从输入流中读取单个字节的数据;如果已到达文件末尾,则返回 -1。

②int read(byte[] b):从输入流中将最多b.length个字节的数据读入一个byte数组中,以整数形式返回存入数组中的实际字节个数;如果已到达文件末尾,则返回 -1。(车)

③void close():关闭此文件输入流并释放与此流有关的所有系统资源。

输出流常用方法:

InputStream抽象类是所有输入字节流类的直接或间接父类,FileInputStream是其重要子类:

  FileInputStream常用构造方法:

①FileInputStream(File file) :通过File对象创建FileInputStream对象。

②FileInputStream(String name) :通过文件(非“目录”)路径创建FileInputStream对象。

  FileInputStream常用方法:

①int read():从输入流中读取单个字节的数据;如果已到达文件末尾,则返回 -1。

②int read(byte[] b):从输入流中将最多b.length个字节的数据读入一个byte数组中,以整数形式返回存入数组中的实际字节个数;如果已到达文件末尾,则返回 -1。

③void close():关闭此文件输入流并释放与此流有关的所有系统资源。

接下来看代码:

1>逐个读取

package venus;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class IO {
	public static void main(String[] args) {
		FileInputStream fileInputStream = null;
		FileOutputStream fileOutputStream = null;
		try {
			fileInputStream = new FileInputStream("D:\\Origami\\折纸自然研究-From Tosummerny.pdf");//定义输入流源头,FileInputStream类对象中传入的不一定是一个路径,也可以是一个File类对象
			fileOutputStream = new FileOutputStream("C:\\Users\\15298\\Desktop\\折纸自然研究-From Tosummerny.pdf");//定义输出流目的地
			int data = 0;//定义“字节搬运工”
			while((data = fileInputStream.read())!=-1){//当读取结束时,read()方法返回-1
				fileOutputStream.write(data);//输入流将“字节搬运工”搬运的字节逐个写入目的文件
			}
			fileOutputStream.flush();
		} catch (Except
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值