Java学习之字节流及字节高效流

本文详细介绍了Java中的I/O流分类,包括按流向和数据类型划分的字节流和字符流。重点讲解了字节流的使用,如FileOutputStream的构造与写入数据的方法,以及如何实现文本内容的复制。通过实例步骤,帮助读者掌握字节流的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、I/O流的分类

按流向分:

输入流

输出流

按数据类型分:

字节流:

字节输入流  InputStream(抽象类)

字节输出流 OutputStream(抽象类)

字符流:

字符输入流  Reader

字符输出流 Writer

注意:I/O默认按照数据类型分类

二、读写数据


三、字节流

1、往文件中写入数据步骤:
(1)创建字节输出流对象
字节输出流 OutputStream为抽象类,所以要创建对象的话就要使用其子类FileOutputStream
(2)调用写数据的方法
(3)释放资源
2、FileOutputStream构造方法
FileOutputStream(File file)
FileOutputStream(String name)
package com.edu.io;

import java.io.FileOutputStream;
import java.io.IOException;

public class FileDemo {
	public static void main(String[] args) throws IOException {
		/*创建字节输出对象
			这个操作做了两件事
			(1)创建了一个文件输出流fos,指向文件a.txt
			(2)创建了a.txt这个文件
		*/
		FileOutputStream fos = new FileOutputStream("c.txt");
		
		//创建字节数组
		String s = "hellojava";
		byte[] bytes = s.getBytes();
		fos.write(bytes);
		
		//关闭流关闭流之后就无法再对这个字节流进行操作
		fos.close();
	}
}
3、FileOutputStream写数据的方法
write(byte[] b) 
write(int b) :一次写一个字节
write(byte[] b, int off, int len) :一次写一个字节数组的一部分
4.字节输入流
操作步骤:
创建字节输入流对象
调用方法读取数据
释放资源
package com.edu.io;

import java.io.FileInputStream;
import java.io.IOException;

public class FileDemo2 {
	public static void main(String[] args) throws IOException {
		//创建字节输入流对象
		FileInputStream file = new FileInputStream("a.txt");
		
		//调用方法读取数据
		int  len;
		while ((len=file.read())!=-1) {
			//读取的时候读出来的实际是这些字符对应的ASCII值,所以要是用强转转换成字符型
			System.out.println((char)len);
		}
		
		//关流
		file.close();
	}
}
5、将一个文本中内容复制到另一个文本中
package com.edu.io;

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

/**
 * A:把a.txt的内容复制到b.txt中
 * 
 * */
public class FileCopyDemo {
	public static void main(String[] args) throws IOException {
		//a.txt为目标源,b.txt为目的地
		FileInputStream fis = new FileInputStream("a.txt");
		FileOutputStream fos = new FileOutputStream("b.txt");
		
		//复制数据
		byte[] bys = new byte[1024];
		int len;
		while ((len=fis.read(bys))!=-1) {
			fos.write(bys, 0, len);
		}
		
		//释放资源
		fos.close();
		fis.close();
:高效字节流一次读写一个字节数组

}}

6、字节缓冲区流(也叫高效流)
BufferedInputStream(InputStream in)
方法:
read() 一次读取一个字节,
read(byte[] b,int off,int len); 返回实际读取长度,数据被读取到数组中。
BufferedOutputStream(OutputStream out)
方法:write(byte[] b,int off,int len)
7、流
低级流: 基本的流,可以直接操作文件。
高级流:是操作基本流的流。




 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值