OSGL 工具库 - IO 操作的艺术
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 操作的艺术相关推荐
- OSGL 工具库 - 类型转换的艺术
2019独角兽企业重金招聘Python工程师标准>>> 在前面的 OSGL 工具库之编程艺术系列中我们讲述了 图像处理的艺术 图像处理的艺术之用户定义处理器 字串处理的艺术 IO 操 ...
- C++ Primer 5th笔记(chap 17 标准库特殊设施)多字节低层IO操作
1. 多字节操作 一些未格式化 IO 操作一次处理大块数据,这些操作要求我们自己分配并管理用来保存和提取数据的字符数组 操作 解释 is.get(sink, size, delim) 从is中读取最多 ...
- Python 数据分析三剑客之 NumPy(六):矩阵 / 线性代数库与 IO 操作
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- 42、C++ Primer 4th笔记,IO库,未格式化IO操作
1.标准库还提供了丰富的支持未格式化IO的低级操作,这些操作使我们能够将流作为未解释的字节序列处理,而不是作为数据类型(如char,int,string等)的序列处理. 2.单字节操作 几个未格式化的 ...
- 工具库用久了,你还会原生操作 Cookie 吗?
用得好了,工具库和框架确实是一大助力,但就怕我们会因此习惯了走捷径,而忘了自己的根本依靠是什么. 前言 前端技术的飞速发展,给从业人员不可避免地带来了"疲劳"感,我们常常会感叹学不 ...
- spacy库的安装与使用_PythonEEG工具库MNEPython详细安装与使用
欢迎关注我们,选择加"星标"或"置顶" 更多技术,第一时间送达 主要内容如下: 安装Python(推荐安装Anaconda) 安装MNE-python 下载MN ...
- Python-EEG工具库MNE中文教程(13)-“bad“通道介绍
目录 标记坏频道/标记不良通道(marking bad channels) 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本教程主要介绍手动标记坏通道以及 ...
- Python-EEG工具库MNE-Python详细安装与使用
目录 安装Python(推荐安装Anaconda) 安装MNE-python 下载MNE-Python中案例数据 测试是否安装成功以及简单使用 本教程为脑机学习者Rose发表于公众号:脑机接口社区 . ...
- 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了. 我们可以不用重复造轮子了. 1 ...
最新文章
- python免费试听-哈尔滨Python人工智能课程免费试听
- 结构体字节对齐(转)
- c++算术溢出_二进制安全之堆溢出(系列)——CTF环境配置
- 修改小程序swiper 点的样式_请问微信小程序swiper切换的点如何修改样式。
- HDU Problem - 6214 Smallest Minimum Cut(最小割边,两种方法)
- 保护 WordPress 安全的10个方法
- python-运算符之算术运算符
- HBase之HFile详解
- 2018 中国互联网哈哈榜之「十大 CP」
- 添加源代码到你的sdk中
- 使用wget命令镜像网站
- bcd转ascii码 流程图_十进制ASCII与BCD码转换程序清单
- 基于openflow的SDN技术
- Matlab线性规划实例
- python-docx页眉横线
- CodeForces - 558DGuess Your Way Out! II(map 扫描线)
- 速成PPTC(自恢复保险丝)选型
- SAP TR传输操作手册
- 【文献翻译】Concealed Object Detection(伪装目标检测)
- 有趣的灵魂千篇一律,电脑滑动关机,仅需2步