# PDStream **Repository Path**: yangsir/PDStream ## Basic Information - **Project Name**: PDStream - **Description**: 流操作器,用于强化 IO 操作,并带有附加的工具 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-09-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Icon

PDStrem


star

-- 主页:(搭建中) --

-- Java Doc --

-- QQ群: 590022218 --

-- TG群: 算了吧,懒得翻墙了 --

------------------------------------------------------------------------------- # 怎么来的 这个其实是我另一个项目的轮子,也是我最开始写的一个项目的提取,那个是一个安卓的清理软件,需要频繁的使用 I/O 操作,于是我便封装了他,虽然那个软件已经弃坑了。顺便加入了字符流操作、路径操作还有解析文本的功能, # 设计哲学 经过作者本人的生活经验,该项目下的每个类都会做好自己的事情,但不会做多余的事情。该类下的几乎所有对象都可以复用。 每个操作对象就是一个 **工具** ,可以拔插装在上面的 **芯片** 。每一个源也是一个可以输入输出的 **芯片** ,可以重载里面的数据; 每一个对象都是为了 **复用、批量、并发、可关闭** 而生; ### 概念 - 不稳定流:
指在 **网络流** 等环境中的流经常会获取到错误的长度信息,或输出出错等,故称为不稳定流。
如:码云的仓库中的文件,就不可以直接获取长度进行读取,因为较长的文件会获取到不正确的长度。 - 稳定流:
如: **文件流** 等,因为可以正确的 获取长度 和稳定的读写。 - 连续操作:
指操作流的时候使用 **一定大小的缓存区** 进行操作,每次读写的东西都会先放入缓冲区 _(片段)_ 。
在读取到 **-1** 之前都会一直进行操作。这样可以保证即使获取不到正确的长度也可以正确的进行读写。
均可使用 **接口** 调整下次操作的缓冲区的大小,根据操作器还会有不同的接口要求,但都包含一个更新片段大小的方法。 ------------------------------------------------------------------------------- # 简介 提供一个用于操作流的操作器,尽力简化 I/O 操作的代码并提供用于操作 **不稳定流** 的方法。 操作器所有方法均 **支持并发和批量操作** 。除流以外其他对象均可复用并且提供相关的一些附加库。 你可以将操作器中的流和数据使用 free() 进行关闭和释放后进行重绑定。每个操作器都需要一个 [**操作源**](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/Source/StreamSource.html),在操作源类下有工场方法用于构造操作源 # 包组件 - IO 字节流操作器工场类及 NIO 操作封装类 - IO.Stream 字节流操作器 - IO.File 路径操作器 - Source 流操作源,包含一个批量关闭流用的容器 - WR 字符流操作器工场类,可使用文件和字节流创建 - WR.Stream 字符流操作器 - WR.Parsing 文本解析器,最复杂的包之一 - WR.Parsing.Source 文本解析源 - WR.Parsing.Source.Partition 文本分割器 ## 使用方法 请导入其 jar 文件,文件在 [发行版](https://gitee.com/fybug/PDStream/releases) 、 [附件](https://gitee.com/fybug/PDStream/attach_files) 或项目的 [jar](https://gitee.com/fybug/PDStream/tree/master/jar) 文件夹下可以找到 >发行版中可以看到全部版本
项目下的 jar 文件夹是当前最新的编译包
附件中是最新的包 ## 构造方法 >可使用流操作器类中的方法将流包装为 **缓冲流**,也可以将 **字节流** 转换为 **缓冲流** 在操作器包下有一个缩略名的工场方法 :
>I\O 操作器: [I_O](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/IO/I_O.html)
W\R 操作器: [W_R](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/WR/W_R.html) 以 I\O 操作器中的复制器 [CopyByte](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/IO/Stream/CopyByte.html) 为例 ```java // 被复制流 InputStream in; // 输出流 OutputStream out; // 复制器 CopyByte copy; // 构造 copy = I_O.createCopy(in, out) ``` 你也可以使用操作器中的方法增加和重绑定要操作的流 每个操作器都需要一个 [**操作源**](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/Source/StreamSource.html) 作为数据源 可使用 [StreamSource.Bytes](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/Source/StreamSource.Bytes.html) 和 [StreamSource.Strings](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/Source/StreamSource.Strings.html) 来生成数据源 >你也可以将其中的 [**操作源**](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/Source/StreamSource.html) 取出,用于其他操作器 在你不需要该操作器或不需要其中的流的时候可以使用 ```java // 清空 copy.clean(); // 释放 copy.free(); // 关闭 copy.close(); ``` 操作方法 ```java // 这样就好啦~ copy.copy(); ``` ## [I\O 操作器](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/IO/Stream/package-summary.html) 提供一个用于操作 **字节流** 的操作器
内部有使用 **连续操作** 的方法,可通过接口将片段大小调为 0 即可中断 >附加:[**路径操作器**](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/IO/File/package-summary.html) ## [W\R 操作器](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/WR/Stream/package-summary.html) 提供一个用于操作 **字符流** 的操作器,内部的 **连续操作** 方法中可使用接口处理单次读取的数据 >附加:[**文本解析器**](https://apidoc.gitee.com/fybug/PDStream/fybug/nulll/pdstream/WR/Parsing/package-summary.html)