个人名片:
🐼作者简介:一名大二在校生,喜欢编程🎋
🐻❄️个人主页🥇:小新爱学习.
🐼个人WeChat:hmmwx53
🕊️系列专栏:🖼️
- 零基础学Java——小白入门必备
- 重识C语言——复习回顾
- 计算机网络体系———深度详讲
- 微信小程序开发——实战开发
🐓每日一句:🍭我很忙,但我要忙的有意义!
文章目录
- 2.字节流
- 2.1 IO概述和分类
- 2.2 字节流写数据
- 字节流写数据的3中方法
- 2.4 字节流写数据的两个小问题
- 2.5 字节流写入数据的异常处理
- 欢迎添加微信,加入我的核心小队,请备注来意
2.字节流
2.1 IO概述和分类
IO流概述
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
- IO:输入/输出(Input/Output)
- 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备之间传输称为流,流的本质是数据传输。
IO流的分类
- 按照数据的流向
- 输入流:读数据
- 输出流:写数据
- 按照数据类型来分
- 字节流
- 字节输入流,字节输出流
- 字符流
- 字符输入流,字符输出流
- 字节流
一般情况下,我们说IO流的分类是按照数据类型来分的
字符流与字节流使用技巧:
若果数据通过Window自带的记事本本地软件打开,我们还可以读懂里面的内容就使用字符流,否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流。
2.2 字节流写数据
字节流抽象基类
- InputStream
这个抽象类是表示字节输入流的所有类的超类
public abstract class InputStream
extends InputStream
InputStream 是用来从 CDR 编组流中读取 IDL 类型的 Java API。这些方法供 ORB 用来解组 IDL 类型以及从 Any 中析取 IDL。_array 形式的方法可以直接用来读取 IDL 类型的序列和数组。
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
有多种构造方法可用来创建对象。
可以使用字符串类型的文件名来创建一个输入流对象来读取文件:
InputStream f = new FileInputStream("C:/java/hello");
也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:
File f = new File("C:/java/hello");
InputStream in = new FileInputStream(f);
创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。
- OutputStream
**这个抽象类是表示字节输出流的所有类的超类,输出流接受输出字节并将这些字节发送到某个接收器。 **
public abstract class OutputStream
extends OutputStream - 子类名特点:子类名称都是以其父类名作为子类名的后缀
FileOutputStream :文件输出流用于将数据写入File
- FileOutStream(String name):创建文件输出流已指定的名称写入文件
该类用来创建一个文件并向文件中写数据。
如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
有两个构造方法可以用来创建 FileOutputStream 对象。
使用字符串类型的文件名来创建一个输出流对象:
OutputStream f = new FileOutputStream("C:/java/hello")
也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:
File f = new File("C:/java/hello");
OutputStream fOut = new FileOutputStream(f);
创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。
使用字节输出流写数据的步骤
- 创建字节输出流对象(调用系统功能创建了文件、创建了字节输出流对象、让字节输出流对象那个指向文件
- 调用字节输出流对象的写数据方法
- 释放资源(关闭此文件输出流并释放与此相关联的任何系统资源)
代码示例:
package com.ithmm_02;
import java.io.FileOutputStream;
import java.io.IOException;
public class InputStream {
public static void main(String[] args) throws IOException {
//创建字节输出流对象
//FileOutStream(String name):创建文件输出流已指定的名称写入文件
FileOutputStream fos = new FileOutputStream("Io\\fas.txt");
/*
1.调用系统功能创建文件
2.创键字节输出流对象
3.让字节输出流对象指向创建好的文件
*/
//void write (int b),将指定字节写入文件输出流
fos.write(97);
fos.write(98);
fos.write(99);
fos.write(55);
// void close()
// 关闭此输出流并释放与此流有关的所有系统资源。
fos.close();
//fos.write(121);//Stream Closed
}
}
字节流写数据的3中方法
方法名 | 说明 |
---|---|
void write(byte[] b) | 将 b.length 个字节写入此输出流。 |
void write(byte[] b, int off, int len) | 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 |
void write(int b) | 将指定 byte 写入此输出流。 |
package com.ithmm_02;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo02 {
public static <FileOutStream> void main(String[] args) throws IOException {
/*
void write(byte[] b) 将 b.length 个字节写入此输出流。
void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
void write(int b) 将指定 byte 写入此输出流。
*/
//fileOutStream(String name),创键文件输出以指定的文件名写入文件夹
FileOutputStream fos = new FileOutputStream("Io\\fos.txt");
// this(var1 != null ? new File(var1) : null, false);
// FileOutputStream fos = new FileOutputStream(new File("Io\\fos.txt"));
//FileOutStream (File file); 创键文件输出流以写入由指定的File对象表示的文件
// FileOutputStream fos2 = new FileOutputStream( new File("Io\\fos.txt"));
// void write(int b) 将指定 byte 写入此输出流。
// fos.write(97);
// fos.write(98);
// fos.write(99);
//void write(byte[] b) 将 b.length 个字节写入此输出流。
// byte[] bys = {97,98,99, 32, 99};
// fos.write(bys);
// fos.close();
// void write(byte[] b) 将 b.length 个字节写入此输出流
byte[] bys1 = "abcdefg".getBytes();
// fos.write(bys1);
//void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
fos.write(bys1,0,bys1.length);
//释放
fos.close();
}
}
2.4 字节流写数据的两个小问题
2.5 字节流写入数据的异常处理
finally:在异常处理是提供finally块;来执行所有清除操作,比如说IO流中的释放资源
特点:被finally控制的语句一定会执行,除非JVM退出
try{
可能出现的异常代码;
}catch(异常类名 变量名){
异常的处理代码;
}finally{
执行所有的清除操作;
}
欢迎添加微信,加入我的核心小队,请备注来意
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇