楼主: eikku81021
1005 0

大厂学苑 RPC框架核心源码深度解析 [推广有奖]

  • 0关注
  • 0粉丝

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
29.8159
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
230 点
帖子
10
精华
0
在线时间
35 小时
注册时间
2020-4-3
最后登录
2023-6-22

楼主
eikku81021 发表于 2022-11-24 00:11:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大厂学苑 RPC框架核心源码深度解析
基本Java IO字节流

所有文件数据(文本、图片、视频等。)是以二进制数的形式存储的,一次一个字节,所以传输时也是如此。因此,字节流可以传输任何文件数据。在操作流的时候,我们要始终明确,无论使用什么样的流对象,底层传输的始终是二进制数据。
字节流可以分为字节输入流(用于读取)/字节输出流(用于写入)。
I字节输出流
1.1字节输出流抽象父类-输出流
Java.io.OutputStream,是Java的io包下所有表示字节输出流的类的超类,将指定的字节信息写入目的地(外部设备)。它定义了字节输出流的基本公共函数方法。

Public void write(byte[] b):将指定字节数组中的b.length字节写入此输出流。
Public void write (byte [] b,int off,int len):从指定的字节数组中写入len个字节,从偏移量o输出到这个输出流中。
公共抽象void write(int b):将指定的字节输出到流中。
Public void close():关闭该输出流,并释放与该流相关的所有系统资源。
Public flush():刷新这个输出流,并强制写出所有缓冲的输出字节。
Public void close():关闭该输出流,并释放与该流相关的所有系统资源。方法,当流的操作完成时,必须调用该方法来释放系统资源。

1.2 FileOutputStream类
java.io.FileOutputStream类是一个FileOutputStream,用于将数据从内存写入文件。
1.2.1文件输出流的构建方法
公共文件输出流(file file):创建一个File output stream来写入由指定File对象表示的文件。
Public output stream (string name):创建一个fileoutputstream并将其写入指定名称的文件。
创建流对象时,必须传入文件路径。在这个路径下,如果这个文件不存在,它将被创建。如果有这个文件,这个文件的数据将被清除。
公共类测试{
公共静态void main(String[] args)引发FileNotFoundException {

//创建一个文件对象
File File = new File(" day 10 _ io/src/a . txt ");// a.txt文件目前不存在,但不影响file对象的创建。
//创建一个字节输出流对象(通过File对象构建)
file output stream fos = new file output stream(file);
system . out . println(fos);
//创建一个字节输出流对象(通过字符串路径构建)
file output stream fo S1 = new file output stream(" day 10 _ io/src/b . txt ");
system . out . println(fo S1);
}
}
复制代码
1.2.2 FileOutputStream类写出字节数据。
写出字节:write(int b)方法,一次可以写出一个字节的数据[97 98 99]

虽然参数的类型是int,有四个字节,但只有一个字节的信息将被保留用于写出。\
操作完成后,必须释放系统资源,调用close方法,请记住。

复制代码
③写出指定长度的字节数组:write(byte[] b,int off,int len),每次从O索引开始用len bytes [abcde]。
/*
输出流字节输出流写出字节数组中指定的数据:
Voidwrite (byte [] b,int off,int len)将len个字节从指定的字节数组和偏移量off写入此fileoutputstream。
Off:指定起始位置!
Len:指定数量!
*/
公共类测试{
公共静态void main(String[] args)引发IOException {

//创建一个字节输出流对象
file output stream fos = new file output stream(" day 10 _ io/src/OS . txt ");

//准备字节数组
byte[] b = "abcde "。getBytes();//每次写入新数据时,文件中的原有数据都会被清空!

//调用write方法将字节数组的数据从内存中写出到指定的文件中。
fos.write(b,0,b . length);// abcde

//关闭资源
fos . close();
}
}
复制代码
1.2.3数据添加和延续

公共文件输出流(file file,boolean append):构建File output stream是为了写入指定File对象表示的文件。\
Public output stream (string name,boolean append):创建fileoutputstream并将其写入指定名称的文件。
在这两种构造方法中,都需要将一个布尔值传递给参数。true表示附加数据,false表示清除原始数据。使用创建的输出流对象,您可以指定是追加还是继续写入。

二。字节输入流
2.1字节输入流抽象父类-输入流
Java.io.InputStream抽象类是代表字节输入流所有类的超类,可以将字节信息读入内存。它定义了字节输入流的基本公共函数方法。

Public abstract int read():从输入流中读取下一个字节的数据。\
Public int read(byte[] b):从输入流中读取一些字节数,并将它们存储在字节数组b中。
Public void close():关闭这个输入流,并释放与这个流相关联的任何系统资源。方法,当流的操作完成时,必须调用此方法来释放系统资源。

2.2文件字节输入流FileInputStream -构造方法

FileInputStream(File File):通过打开到实际文件的连接来创建一个FileInputStream,该文件由文件系统中的File对象le命名。\
FileInputStream(String name):通过打开到实际文件的连接来创建FileInputStream,实际文件在文件系统中以路径名命名。

注意:当你创建一个流对象时,你必须传递一个文件路径。在这个路径下,如果没有这样的文件,就会抛出FileNotFoundException。
/*
FileInputStream的字节输入流的构造方法;
FileInputStream(File File)://通过打开到实际文件的连接来创建File inputstream,实际文件由文件系统中的File对象le命名。
FileInputStream(String name)://通过打开到实际文件的连接来创建file inputstream,实际文件在文件系统中以路径名命名。

//* * * ②使用字节数组读取:read(byte[] b),每次将b字节的长度读入数组,返回读取的有效字节数。读到最后时,返回-1 * * * [abcde] *

公共类测试{
公共静态void main(String[] args)引发IOException {

//创建字节输入流(文件路径作为参数的构造方法)
file inputstream fis = new file inputstream(" day 10 _ io/src/is . txt ");//数据是abcde

//定义字节数组
byte[] bytes =新字节[2];

//读取字节数组数据的长度!
int len
while ((len = fis.read(字节))!= -1) {//只要不到文件末尾就继续读!
//每次读取的数据放在一个字节数组中
System.out.print(新字符串(字节));
}
//释放资源
fis . close();
}
}
复制代码
错误d是由于在上一次读取时只读取了一个字节e。在数组中,最后读取的数据cd还没有被完全替换,所以需要通过len获取一个有效字节。
公共类测试{
公共静态void main(String[] args)引发IOException {

//创建字节输入流(文件路径作为参数的构造方法)
file inputstream fis = new file inputstream(" day 10 _ io/src/is . txt ");//数据是abcde

//定义字节数组
byte[] bytes =新字节[2];

//读取字节数组数据的长度!
int len
while ((len = fis.read(字节))!= -1) {//只要不到文件末尾就继续读!
//每次读取的数据放在一个字节数组中
system . out . print(new String(bytes,0,len));//从数组0的索引位置到指定长度(读取数据的长度不是数组的长度!)
}
//释放资源
fis . close();
}
}
复制代码
三、字节流练习(图片复制)
标题:将磁盘D io目录的vn.jpg复制到项目project (day10_io/src)!
分析:
1.将磁盘D的文件输入变成输入流(读入内存的磁盘数据)[输入流:字节流]
2.将内存读取的数据写出到磁盘上的指定位置![输出流:字节流] \
公共类测试{
公共静态void main(String[] args)引发IOException {

//根据位置分别创建2个字节流
file inputstream fis = new file inputstream(" D:/io/VN . jpg ");
file output stream fos = new file output stream(" day 10 _ io/src/copy . jpg ");

//读取字节数组
byte[] bytes =新字节[1024];

int len//字节数据中有效数据的长度!
while ((len = fis.read(字节))!= -1) {//读取的数据以字节为单位放入,读取的数据中有效数据的长度为len。
//写出来(有效数据)
fos.write(bytes,0,len);
}

//释放资源【原理:先开后关!]
fos . close();
fis . close();
}
}
复制代码
注意:关闭流的原则是:先开后关,先开后关。
大厂学苑 RPC框架核心源码深度解析
download
链接:https://pan.baidu.com/s/18_qJjFaPtGVBqkDOxwMIDg?pwd=syvi
提取码:syvi
--来自百度网盘超级会员V5的分享

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:exception download abstract outputs BOOLEAN

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-8 12:45