当前位置: 首页 > news >正文

Java 字节流

一、输入输出流

        输入输出 ------- 读写文件

        输入 ------- 从文件中获取数据到自己的程序中,接收处理【读】

        输出 ------- 将自己程序中处理好的数据保存到文件中【写】

        流 ------- 数据移动的轨迹

二、流的分类

        按照数据的移动轨迹分为:输入流   输出流

        按照每一次读写/数据量的大小将流分成:字节流    字符流

        字节流:每一次可读写一个字节的数据量,一个字节就是8位2进制,可处理任何类型的文

                      件【文本、图片、视频........】

        字符流:每一次可读写一个字符的数据量,一个字符就是16位2进制,只能处理文本类型的

                       文件

三、字节流相关类的使用

        字节输出流 --------- OutPutStream ------- 抽象类 ---------- 不能new --------- 需要找子类

        1.FileOutputStream类

        构造方法:

        FileOutputStream (File file) 通过File 对象创建一个不可追加的字节输出流

        FileOutoutStream (File file,boolean append) 通过File 对象创建一个可追加的字节输出流

        FileOutoutStream (String name) 通过字符串创建一个不可追加的字节输出流

        FileOutoutStream (String name,boolean append) 通过字符串创建一个可追加的字节输出流

public class FileOutputStreamDemo1 {public static void main(String[] args)throws Exception {String  path="F:"+File.separator+"test"+File.separator+"student.txt";//字节输出流--OutputStream--抽象类--FileOutputStream//FileOutputStream类的构造方法//FileOutputStream(String name) 通过String对象创建一个不可追加的字节输出流。  //参数String name--表示文件路劲【目标位置】OutputStream  out1=new FileOutputStream(path);FileOutputStream  out11=new FileOutputStream(path);//FileOutputStream(String name, boolean append)通过String对象创建一个是否追加的字节输出流。//参数1String name--表示文件路劲【目标位置】//参数2boolean append--是否允许追加【true-追加,false-不追加】OutputStream  out2=new FileOutputStream(path,true);FileOutputStream  out22=new FileOutputStream(path,true);//推荐使用File  file=new File(path);//FileOutputStream(File file) 通过File对象创建一个不可追加的字节输出流。 //参数File file--表示文件路劲【目标位置】OutputStream  out3=new FileOutputStream(file);FileOutputStream  out33=new FileOutputStream(file);//FileOutputStream(File file, boolean append) 通过File对象创建一个是否追加的字节输出流。//参数1File file--表示文件路劲【目标位置】//参数2boolean append--是否允许追加【true-追加,false-不追加】OutputStream  out4=new FileOutputStream(file,true);FileOutputStream  out44=new FileOutputStream(file,true);}
}

        实例方法:

        void write (byte[ ]  b) 将b.length个字节从字节数组写入此文件输出流

        void write (byte[ ] b,int off , int len) 将 len字节从位于偏移量 off的指定字节数组写入

        void write (int b) 将指定的字节写入此文件输出流

        void close( ) 关闭文件输出流并释放与此相关的任何系统资源

public class TestFileOutputStream {public static void main(String[] args) throws Exception{String filepath = "F:"+         File.separator+"wangxinghomework"+File.separator+"20230902"+File.separator+"test.txt";File file = new File(filepath);FileOutputStream fileOutputStream = new FileOutputStream(file,true);String data = "hello,zhaomin";byte bytearray[] = data.getBytes();fileOutputStream.write(bytearray);fileOutputStream.close();
//fileOutputStream.write(bytearray,5,8);fileOutputStream.write(97);fileOutputStream.close();}
}

       2. 字节输入流 ------ InputStream ------ 抽象类 ------- 不能new ------- 找子类

        FileInputStream 构造方法:

        FileInputStream(File file) 通过File对象创建一个字节输入流

        FileInputStream(String name) 通过String对象创建一个字节输入流

public class TestFileInputStream {public static void main(String[] args) throws Exception{
//        FileInputStream类构造方法:
//        	FileInputStream(File file) 通过File对象创建一个字节输入流
//        	FileInputStream(String name) 通过String对象创建一个字节输入流String filepath = "F:"+ File.separator+"wangxinghomework"+File.separator+"20230902"+File.separator+"test.txt";File file = new File(filepath);FileInputStream fileInputStream = new FileInputStream(file);FileInputStream fileInputStream1 = new FileInputStream(filepath);}
}

       FileInputStream 实例方法:

       int read () 从该输入流读取一个字节的数据  ,返回值:读取到的具体字节数据的int型,如果到达文件末尾返回-1

        int read (byte[ ]  b) 从该输入流读取最多 b.length个字节的数据为字节数组 ,返回值:读取的总字节数, 如果到达文件末尾返回-1

        void    close() 关闭此文件输入流并释放与流相关联的任何系统资源

public class TestFileInputStream {public static void main(String[] args) throws Exception{String filepath = "F:"+ File.separator+"wangxinghomework"+File.separator+"20230902"+File.separator+"test.txt";File file = new File(filepath);FileInputStream fileInputStream = new FileInputStream(file);//读取一个字节read()int value = fileInputStream.read();String str1 = String.valueOf(value);//转成字符串String类型fileInputStream.close();System.out.println(str1+"ok");//	int	read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组//定义一个字节型数组,用来保存读出的数据byte bytearray[] = new byte[(int) file.length()];//定义一个临时保存读取来的数据int temp = 0;//定义一个数组下标int index = 0;while ((temp=fileInputStream.read()) != -1){bytearray[index] = (byte)temp;index++;}String str = new String(bytearray);System.out.println(str);fileInputStream.close();}
}

     3.DataOutputStream

        DataOutputStream 构造方法:

        DataInputStream(InputStream  in) 创建使用指定的底层InputStream的DataInputStream

        DataOutputStream 实例方法:

void    writeBoolean(boolean v)将 boolean写入底层输出流作为1字节值
void    writeByte(int v)将 byte作为1字节值写入底层输出流
void    writeChar(int v)将 char写入底层输出流作为2字节值,高字节优先
void    writeDouble(double v)双参数传递给转换 long使用 doubleToLongBits方法在类 Double,然后写入该 long值基础输出流作为8字节的数量,高字节
void    writeFloat(float v)浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入 该 int值基础输出流作为一个4字节的数量,高字节。 
void    writeInt(int v)将底层输出流写入 int作为四字节,高位字节
void    writeLong(long v)将 long写入底层输出流,为8字节,高字节为首
void    writeShort(int v)将 short写入底层输出流作为两个字节,高字节优先
void    writeUTF(String str)使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流
void    flush()刷新此数据输出流
void    close()关闭此输出流并释放与此流相关联的任何系统资源
package com.homework.inouttest;import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;public class TestDataOutputStream {public static void main(String[] args) throws Exception{//构造方法//DataOutputStream(OutputStream out) 创建一个新的数据输出流,以将数据写入指定的底层输出流。String filepath = "F:"+ File.separator+"wangxinghomework"+File.separator+"20230902"+File.separator+"test1.txt";File file = new File(filepath);FileOutputStream out = new FileOutputStream(file,true);DataOutputStream dataOutputStream = new DataOutputStream(out);//DataOutputStream类的实例方法//	void	writeBoolean(boolean v) 将 boolean写入底层输出流作为1字节值。dataOutputStream.writeBoolean(true);//	void	writeByte(int v) 将 byte作为1字节值写入底层输出流。dataOutputStream.writeByte(97);//	void	writeChar(int v) 将 char写入底层输出流作为2字节值,高字节优先。dataOutputStream.writeChar('b');//	void	writeDouble(double v) 双参数传递给转换 long使用 doubleToLongBits方法在类 Double ,		然后写入该 long值基础输出流作为8字节的数量,高字节。dataOutputStream.writeDouble(16.2);//	void	writeFloat(float v) 浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入		该 int值基础输出流作为一个4字节的数量,高字节。dataOutputStream.writeFloat(17.2f);//	void	writeInt(int v) 将底层输出流写入 int作为四字节,高位字节。dataOutputStream.writeInt(23);//	void	writeLong(long v) 将 long写入底层输出流,为8字节,高字节为首。//	void	writeShort(int v) 将 short写入底层输出流作为两个字节,高字节优先。//	void	writeUTF(String str) 使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流dataOutputStream.writeUTF("wo ai ni");//	void	flush() 刷新此数据输出流。dataOutputStream.flush();//	void	close() 关闭此输出流并释放与此流相关联的任何系统资源。dataOutputStream.close();}
}

         4.DataInputStream类

            DataInputStream类构造方法

            DataInputStream(InputStream  in)创建使用指定的底层InputStream的DataInputStream。

            DataInputStream类实例方法

boolean    readBoolean() 
byte    readByte()
char    readChar()
double    readDouble() 
float    readFloat()
int    readInt()
long    readLong()
short    readShort()
String    readUTF()
void    close()
package com.homework.inouttest1;import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;public class TestDataInputStream {public static void main(String[] args) throws Exception{//构造方法//DataInuptStream(InputStream in)String filepath = "F:"+ File.separator+"wangxinghomework"+File.separator+"20230902"+File.separator+"test1.txt";File file = new File(filepath);FileInputStream inputStream = new FileInputStream(file);DataInputStream dataInputStream = new DataInputStream(inputStream);//实例方法//boolean	readBoolean()boolean flag = dataInputStream.readBoolean();//byte	readByte()byte byt = dataInputStream.readByte();//	char	readChar()char cha = dataInputStream.readChar();//	double	readDouble()double dou = dataInputStream.readDouble();//	float	readFloat()float flo = dataInputStream.readFloat();//	int	readInt()int in = dataInputStream.readInt();//	long	readLong()//	short	readShort()//	String	readUTF()String str = dataInputStream.readUTF();//	void	close()dataInputStream.close();System.out.println(flag+","+byt+","+cha+","+dou+","+flo+","+in+","+str);}
}

        优点:可以直接写出基本数据类型的数据和String,且不需要转换成字节数组
        缺点:保存到文件中的数据是乱码

      5.序列化

        将一个java对象转换成2进制流数据过程,因为我们做操作的java对象可能需要在多台计算机之间传递

        如何实现序列化?

        (1).为被序列化的java对象的生成类实现一个序列化接口【Serializable】
            public interface Serializable特殊----该接口中一个方法都没有,类的序列化由实现java.io.Serializable接口的类启用。不实现此接口的类将不会使任何状态序列化或反序列化。
可序列化类的所有子类型都是可序列化的。

        (2).通过java提供ObjectOutputStream类的writeObject(Object obj)

             ObjectOutputStream的构造方法
             ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。 
             实例方法
              void    writeObject(Object obj) 将指定的对象写入ObjectOutputStream。

        6.反序列化

           将2进制流数据转换成java对象的过程,需要ObjectInputStream类的Object  readObject()方法读取对象

           ObjectInputStream类的构造方法
                    ObjectInputStream(InputStream  in)
            ObjectInputStream类的实例方法
                    Object    readObject() 从ObjectInputStream读取一个对象

package com.homework.inouttest1;import java.io.Serializable;public class Student implements Serializable {//实例方法,测试用public void learn(){System.out.println("Student类的实例方法");}
}
package com.homework.inouttest;import com.homework.inouttest1.Student;import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;//ObjectOutputStream(Object obj)
public class ObjectOutTest {public static void main(String[] args) throws Exception{String filepath = "F:"+ File.separator+"student.txt";File file = new File(filepath);FileOutputStream outputStream = new FileOutputStream(file);ObjectOutputStream out = new ObjectOutputStream(outputStream);Student student = new Student();out.writeObject(student);out.close();outputStream.close();}
}
package com.homework.inouttest1;import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;public class ObjectInputTest {public static void main(String[] args) throws Exception{String filepath =  "F:"+ File.separator+"student.txt";File file = new File(filepath);FileInputStream fileInputStream = new FileInputStream(file);ObjectInputStream in = new ObjectInputStream(fileInputStream);Object objstudent=in.readObject();Student studentst = (Student)objstudent;in.close();fileInputStream.close();studentst.learn();}
}

从D盘复制jpg类型文件到H盘

package com.homework.inouttest;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class CopyTest {public static void main(String[] args)throws Exception {//定义D盘路径String filepath = "D:"+ File.separator;//创建文件对象File file = new File(filepath);//获取D盘所有文件名称File myfilelist[] = file.listFiles();for (File d_file:myfilelist) {String filename = d_file.getName();int houzhui = filename.lastIndexOf(".");if (houzhui != -1){String houzhuiname = filename.substring(houzhui);if (houzhuiname.equals(".jpg")) {//拼接文件路径String jpgpath = filepath + filename;FileInputStream fileInputStream = new FileInputStream(jpgpath);//定义H盘路径String newpath = "H:"+filename;File newfile = new File(newpath);FileOutputStream fileOutputStream = new FileOutputStream(newfile);int temp = 0;while ((temp = fileInputStream.read()) != -1) {fileOutputStream.write(temp);}fileInputStream.close();fileOutputStream.close();}}}}
}

相关文章:

Java 字节流

一、输入输出流 输入输出 ------- 读写文件 输入 ------- 从文件中获取数据到自己的程序中,接收处理【读】 输出 ------- 将自己程序中处理好的数据保存到文件中【写】 流 ------- 数据移动的轨迹 二、流的分类 按照数据的移动轨迹分为:输入流 输出流…...

华硕电脑怎么录屏?分享实用录制经验!

“华硕电脑怎么录屏呀,刚买的笔记本电脑,是华硕的,自我感觉挺好用的,但是不知道怎么录屏,最近刚好要录一个教程,怎么都找不到在哪里录制,有人能教教我吗?” 随着电脑技术的不断发展…...

python学习--python的异常处理机制

try…except try:n1int(input(请输入一个整数))n2int(input(请输入另一个整数))resultn1/n2print(结果为,result) except ZeroDivisionError: print(除数不能为0)try…except…else 如果try块中没有抛出异常,则执行else块,如果try中抛出异常&#xff0…...

nacos+Dubbo整合快速入门

官网&#xff1a;Nacos Spring Boot 快速开始 下载下载链接启动&#xff1a;进入bin目录&#xff0c;startup.cmd -m standalone引入依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.9…...

QT实现钟表

1、 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QPaintEvent> //绘制事件类 #include <QDebug> //信息调试类 #include <QPainter> //画家类 #include <QTimerEve…...

准备我们心爱的IDEA写Jsp

JSP学习 一、准备我们心爱的IDEA new一个项目&#xff1a;New Project --> Next -->Next -->Finsh 二、配置好服务器Tomcat-9.0.30 1.> 在WEB-INF下创建一个Lib包 将jsp-api.jar复制进去&#xff0c;并使其生效 未生效前&#xff1a; 生效过程&#xff1a; 2.>…...

将近 5 万字讲解 Python Django 框架详细知识点(更新中)

Django 框架基本概述 Django 是一个开源的 Web 应用后端框架&#xff0c;由 Python 编写。它采用了 MVC 的软件设计模式&#xff0c;即模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。在 Django 框架中&am…...

Arcgis提取每个像元的多波段反射率值

Arcgis提取每个像元的多波段反射率值 数据预处理 数据预处理阶段需要对遥感图像进行编辑传感器参数、辐射定标、大气校正、正射校正&#xff0c;具体流程见该文章 裁剪研究区 对于ENVI处理得到的tiff影像&#xff0c;虽然是经过裁剪了&#xff0c;但是还存在黑色的背景值&a…...

JavaScript面试题整理(一)

数据类型篇 1、JavaScript有哪些数据类型&#xff0c;它们的区别是什么&#xff1f; 基本数据类型&#xff1a;number、string、boolean、undefined、NaN、BigInt、Symbol 引入数据类型&#xff1a;Object NaN是JS中的特殊值&#xff0c;表示非数字&#xff0c;NaN不是数字…...

数据结构:树和二叉树之-堆排列 (万字详解)

目录 树概念及结构 1.1树的概念 1.2树的表示 ​编辑2.二叉树概念及结构 2.1概念 2.2数据结构中的二叉树&#xff1a;​编辑 2.3特殊的二叉树&#xff1a; ​编辑 2.4 二叉树的存储结构 2.4.1 顺序存储&#xff1a; 2.4.2 链式存储&#xff1a; 二叉树的实现及大小堆…...

爬虫入门基础:深入解析HTTP协议的工作过程

目录 一、HTTP协议简介 二、HTTP协议的工作过程 三、请求方法与常见用途 四、请求头与常见字段 五、状态码与常见含义 六、进阶话题和注意事项 总结 在如今这个数字化时代&#xff0c;互联网已经成为我们获取信息、交流和娱乐的主要渠道。而在互联网中&#xff0c;HTTP协…...

k8备份与恢复-Velero

简介 Velero 是一款可以安全的备份、恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件。 Velero 实现的 kubernetes 资源备份能力&#xff0c;可以轻松实现 Kubernetes 集群的数据备份和恢复、复制 kubernetes 集群资源到其他kubernetes 集群或者快速复制生产环境…...

基于Python开发的火车票分析助手(源码+可执行程序+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的火车票分析助手&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;…...

旺店通·企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书)

旺店通企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书) 接通系统&#xff1a;旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会…...

卡尔曼滤波应用在数据处理方面的应用

卡尔曼滤波应用到交通领域 滤波器介绍核心思想核心公式一维卡尔曼滤波器示例导入所需的库 滤波器介绍 卡尔曼滤波器是一种用于估计系统状态的数学方法&#xff0c;它以卡尔曼核心思想为基础&#xff0c;广泛应用于估计动态系统的状态和滤除测量中的噪声。以下是卡尔曼滤波器的核…...

PROFIBUS主站转ETHERCAT协议网关

产品介绍 JM-DPM-ECT是自主研发的一款PROFIBUS-DP主站功能的通讯网关。该产品主要功能是将各种PROFIBUS-DP从站接入到ETHERCAT网络中。 本网关连接到PROFIBUS总线中作为主站使用&#xff0c;连接到ETHERCAT总线中作为从站使用。 产品参数 技术参数 ◆ PROFIBUS-DP/V0 协议符…...

Vue路由的使用及node.js下载安装和环境搭建

目录 一、Vue路由 1.1 简介 ( 1 ) 特点 ( 2 ) 作用 1.2 实例 ( 1 ) 引入 ( 2 ) 组件 ( 3 ) 关系 ( 4 ) 路由 ( 5 ) 事件 ( 6 ) 锚点 二、nodeJS 2.1 下载 2.2 安装 2.3 环境搭建 新增 添加 测试 配置 运行 一、Vue路由 1.1 简介 Vue路由是Vue.…...

【算法训练-二叉树 三】【最大深度与直径】求二叉树的最大深度、求二叉树的直径

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【求二叉树的直径】&#xff0c;使用【二叉树】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件…...

查看linux是centos还是Ubuntu

查看linux是centos还是Ubuntu 命令&#xff1a;cat /etc/os-release...

win10怎么关闭自动更新,这个方法你知道吗?

Windows 10 操作系统自动更新是确保系统安全性和性能的关键功能。然而&#xff0c;有时用户可能希望手动控制更新&#xff0c;因此关闭自动更新可能是一个有用的选项。在本文中&#xff0c;我们将介绍win10怎么关闭自动更新的两种方法&#xff0c;以满足用户不同的需求。 方法1…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...