2019独角兽企业重金招聘Python工程师标准>>>

在前面的 OSGL 工具库之编程艺术系列中我们讲述了

  • 图像处理的艺术
  • 图像处理的艺术之用户定义处理器
  • 字串处理的艺术

本文中我们将介绍如何使用 OSGL IO 工具类来处理输入输出操作.

依旧是老规矩: 用代码来写博客

首先准备测试变量:

@Ignore
public static class Base extends TestBase {protected static String content;protected static C.List<String> lines;protected static int lineNumber;@Beforepublic void prepareContent() {lineNumber = 5 + N.randInt(10);lines = C.newList();for (int i = 0; i < lineNumber; ++i) {lines.add(S.random());}content = S.join(lines).by("\n").get();}
}

下面的测试代码可以看出如何使用 IO 库进行操作:

public static class FluentIOTest extends Base {@Testpublic void testReadStringIntoLines() {eq(lines, IO.read(content).toLines());}@Testpublic void testWriteStringIntoOutputStream() {ByteArrayOutputStream baos = new ByteArrayOutputStream();IO.write(content).to(baos);eq(content, new String(baos.toByteArray()));}@Testpublic void testWriteByteArrayIntoOutputStream() {byte[] ba = {1, 2, 3};ByteArrayOutputStream baos = new ByteArrayOutputStream();IO.write(ba).to(baos);eq(ba, baos.toByteArray());}@Testpublic void testWriteByteArrayIntoFile() throws IOException  {File file = File.createTempFile("osgl", ".tmp");byte[] ba = {1, 2, 3};IO.write(ba).to(file);byte[] ba0 = IO.read(file).toByteArray();eq(ba, ba0);}
}

其他 IO 工具演示:

Flushable f;
IO.flush(f);Closable c;
IO.close(c);InputStream is;
is = IO.inputStream(); // an empty inputstream
is = IO.inputStream("ABC"); // an input stream of string "ABC"
is = IO.inputStream(new byte[]{1, 2, 3});
is = IO.inputStream(new File("/etc/bash.bashrc"));
is = IO.inputStream(MyClass.getResource("/app.properties"));Reader r;
r = IO.reader(); // an empty reader
r = IO.reader("ABC");
r = IO.reader("ABC".getBytes()):
r = IO.reader(new File("/etc/bash.bashrc"));
r = IO.reader(MyClas.getResource("/app.properties"));File tmpDir = new File("/tmp");
File tmpFoo = IO.child(tmpDir, "foo.txt"); // /tmp/foo.txt
File tmpDir2 = IO.parent(tmpFoo);
List<File> files = IO.children(tmpDir);String s0 = IO.checksum(new File("/etc/bash.bashrc"));
String s1 = IO.checksum(IO.inputStream(new File("/etc/bash.bashrc"));BufferedInputStream is0 = IO.buffered(myOtherInputStream);
BufferedOutputStream os0 = IO.buffered(myOtherOutputStream);
BufferedReader r0 = IO.buffered(myOtherReader);
BufferedWriter w0 = IO.buffered(myOtherWriter);File tmpZip = IO.zip(f0, f1, ...);
File givenZipFile = ...
IO.zipInto(givenZipFile, f0, f1, ...);

特别提示, OSGL IO 库所有的操作都不会抛出 IOException 异常, 如果有 IO 异常, OSGL IO 库会抛出 UnexpectedIOException 运行时异常.

转载于:https://my.oschina.net/greenlaw110/blog/1790370

OSGL 工具库 - IO 操作的艺术相关推荐

  1. OSGL 工具库 - 类型转换的艺术

    2019独角兽企业重金招聘Python工程师标准>>> 在前面的 OSGL 工具库之编程艺术系列中我们讲述了 图像处理的艺术 图像处理的艺术之用户定义处理器 字串处理的艺术 IO 操 ...

  2. C++ Primer 5th笔记(chap 17 标准库特殊设施)多字节低层IO操作

    1. 多字节操作 一些未格式化 IO 操作一次处理大块数据,这些操作要求我们自己分配并管理用来保存和提取数据的字符数组 操作 解释 is.get(sink, size, delim) 从is中读取最多 ...

  3. Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  4. 42、C++ Primer 4th笔记,IO库,未格式化IO操作

    1.标准库还提供了丰富的支持未格式化IO的低级操作,这些操作使我们能够将流作为未解释的字节序列处理,而不是作为数据类型(如char,int,string等)的序列处理. 2.单字节操作 几个未格式化的 ...

  5. 工具库用久了,你还会原生操作 Cookie 吗?

    用得好了,工具库和框架确实是一大助力,但就怕我们会因此习惯了走捷径,而忘了自己的根本依靠是什么. 前言 前端技术的飞速发展,给从业人员不可避免地带来了"疲劳"感,我们常常会感叹学不 ...

  6. spacy库的安装与使用_PythonEEG工具库MNEPython详细安装与使用

    欢迎关注我们,选择加"星标"或"置顶" 更多技术,第一时间送达 主要内容如下: 安装Python(推荐安装Anaconda) 安装MNE-python 下载MN ...

  7. Python-EEG工具库MNE中文教程(13)-“bad“通道介绍

    目录 标记坏频道/标记不良通道(marking bad channels) 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本教程主要介绍手动标记坏通道以及 ...

  8. Python-EEG工具库MNE-Python详细安装与使用

    目录 安装Python(推荐安装Anaconda) 安装MNE-python 下载MNE-Python中案例数据 测试是否安装成功以及简单使用 本教程为脑机学习者Rose发表于公众号:脑机接口社区 . ...

  9. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

    复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了.        我们可以不用重复造轮子了. 1 ...

最新文章

  1. python免费试听-哈尔滨Python人工智能课程免费试听
  2. 结构体字节对齐(转)
  3. c++算术溢出_二进制安全之堆溢出(系列)——CTF环境配置
  4. 修改小程序swiper 点的样式_请问微信小程序swiper切换的点如何修改样式。
  5. HDU Problem - 6214 Smallest Minimum Cut(最小割边,两种方法)
  6. 保护 WordPress 安全的10个方法
  7. python-运算符之算术运算符
  8. HBase之HFile详解
  9. 2018 中国互联网哈哈榜之「十大 CP」
  10. 添加源代码到你的sdk中
  11. 使用wget命令镜像网站
  12. bcd转ascii码 流程图_十进制ASCII与BCD码转换程序清单
  13. 基于openflow的SDN技术
  14. Matlab线性规划实例
  15. python-docx页眉横线
  16. CodeForces - 558DGuess Your Way Out! II(map 扫描线)
  17. 速成PPTC(自恢复保险丝)选型
  18. SAP TR传输操作手册
  19. 【文献翻译】Concealed Object Detection(伪装目标检测)
  20. 有趣的灵魂千篇一律,电脑滑动关机,仅需2步

热门文章

  1. adams优化设计移动副_副车架多学科优化及轻量化优化设计
  2. DHCP服务及与DHCP中继详解
  3. WPS有时候出现字母按不出,打字丢失字母的问题
  4. 码农日常生活之Git Gitlab Gitk
  5. 高功率光纤激光切割机,可以做更多的事
  6. 基于迁移学习的 PyTorch 狗狗分类器
  7. 谷歌浏览器安卓版_安卓版 Chrome 82 将通过新的 Cookies 设置改善隐私
  8. 博图注册表删除方法_回收站文件删除怎么恢复?数据恢复还得靠它
  9. 计算直柱体的面积和体积
  10. PHP处理kafka消息队列