Guava学习之Resources

Similar documents
Guava学习之CharSequenceReader

使用MapReduce读取XML文件

通过Hive将数据写入到ElasticSearch

使用Cassandra和Spark 2.0实现Rest API服务

Hadoop&Spark解决二次排序问题(Hadoop篇)

Hive:用Java代码通过JDBC连接Hiveserver

Flume-ng与Mysql整合开发

新・解きながら学ぶJava

Spark读取Hbase中的数据

三种方法实现Hadoop(MapReduce)全局排序(1)

在Spring中使用Kafka:Producer篇

使用Spark SQL读取Hive上的数据

Apache CarbonData集群模式使用指南

使用Apache Beam读写HDFS上的文件

使用Hive读取ElasticSearch中的数据

韶关:神奇丹霞

哼, 你 們 不 回 答 又 怎 麼 樣? 不 管 是 多 大 來 頭, 現 在 都 被 血 魔 吞 噬 無 蹤 了 你 們 幾 個 真 是 太 過 分, 我 不 犯 你 們, 你 們 卻 一 天 到 晚 來 挑 釁 我 教 尊 冷 笑 著 說 道 嗚, 大 人 土 地 大 姐 跪 下 來, 流 下

untitled

伊春:醉人林都

如何在 Apache Hive 中解析 Json 数组

JavaIO.PDF

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

Hadoop元数据合并异常及解决方法

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

3.1 num = 3 ch = 'C' 2

关林:武圣陵寝

泰山:五岳独尊

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

国内26省市新能源汽车推广规划已出台

北戴河:海阔天空

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word - 01.DOC

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6


西岭雪山滑雪场

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Kafka客户端是如何找到 leader 分区的

《大话设计模式》第一章

Flink on YARN部署快速入门指南

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

SparkR(R on Spark)编程指南

Flink快速上手(QuickStart)

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

第一章

untitled

江门:中国第一侨乡

是 喔, 就 是 那 個 在 BBS 醫 療 版 跟 你 嗆 聲, 自 稱 有 三 十 多 年 推 拿 經 驗 的 大 叔 嗎? 一 個 看 來 頗 為 清 秀 的 女 生 問 道, 她 語 氣 中 略 感 訝 異 是 啊, 什 麼 推 拿 按 摩 有 多 好, 還 要 人 生 病 盡 量 不 要

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

EJB-Programming-3.PDF

1.5招募说明书(草案)

教育扩张能改善收入分配差距吗?——来自CHNS2006年数据的证据

山水文化,市井人家——以湖州邱城小镇的概念性规划为例

Apache Spark 2.4 新增内置函数和高阶函数使用介绍

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

電機工程系認可證照清單 /7/1

Ubuntu和CentOS如何配置SSH使得无密码登陆

在Fedora上部署Hadoop2.2.0伪分布式平台

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

chp6.ppt

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

六种使用Linux命令发送带附件的邮件

untitled

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

CHAPTER VC#


Microsoft Word - ch04三校.doc

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

java2d-4.PDF

三种方法实现Hadoop(MapReduce)全局排序(2)

untitled

HBase 中加盐(Salting)之后的表如何读取:协处理器篇

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

Microsoft Word - 第3章.doc

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态 实 验 四 : 异 常 处 理 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23

行 业 市 场 研 究 属 于 企 业 战 略 研 究 范 畴, 作 为 当 前 应 用 最 为 广 泛 的 咨 询 服 务, 其 研 究 报 告 形 式 呈 现, 通 常 包 含 以 下 内 容 : 一 份 专 业 的 行 业 研 究 报 告, 注 重 指 导 企 业 或 投 资 者 了 解 该

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

javaexample-02.pdf

Hive几种数据导入方式

Microsoft Word - Learn Objective-C.doc

据传-蚂蚁金服350亿美元开约A股IPO,马云身价又要暴涨

张家口:塞外明珠

解决百度统计无法获取https来源的referrer

untitled

Java

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

PDF 入不思議解脫境界普賢行願品 ... 《大方廣佛華嚴經卷第四十》

Transcription:

Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于 java 中 ClassLoader 类的 getresource 函数来实现的, 只是 Resources 类中的 getresource 函数给我们封装了 ClassLoader 对象的获取, 使得用户不需要自己去获取 Class Loader 对象 public static URL getresource(string resourcename) { ClassLoader loader = Objects.firstNonNull( Thread.currentThread().getContextClassLoader(), Resources.class.getClassLoader()); URL url = loader.getresource(resourcename); checkargument(url!= null, "resource %s not found.", resourcename); return url; public static URL getresource(class<?> contextclass, String resourcename) { URL url = contextclass.getresource(resourcename); checkargument(url!= null, "resource %s relative to %s not found.", resourcename, contextclass.getname()); return url; 上面两个函数处理完后都是返回 URL 类型的对象, 第一个 getresource 函数中 Objects.firstNo nnull 函数原型为 public static <T> T firstnonnull(@nullable T first, @Nullable T second) 其实现如下 : public static <T> T firstnonnull(@nullable T first, @Nullable T second) { return first!= null? first : checknotnull(second); 1 / 5

从其实现可以看出,firstNonNull 函数返回其两个参数中首先不为 null 的对象 ; 如若两个参数都为 null, 则该函数将会抛出类型为 NullPointerException 异常 好了, 再回到 Resources 类中来, 上面的两个 getresource 函数返回的对象都是 URL 类型的, 而观察 Resources 类其他函数, 都可以接受 URL 类型的参数, 如下所示 : public static InputSupplier<InputStream> newinputstreamsupplier(url url) public static ByteSource asbytesource(url url) public static InputSupplier<InputStreamReader> newreadersupplier (URL url, Charset charset) public static CharSource ascharsource(url url, Charset charset) public static byte[] tobytearray(url url) throws IOException public static String tostring(url url, Charset charset) throws IOException public static <T> T readlines(url url, Charset charset, LineProcessor<T> callback) throws IOException public static List<String> readlines(url url, Charset charset) throws IOException public static void copy(url from, OutputStream to) throws IOException 下面分别介绍这些函数的用法 : InputSupplier<InputStream> inputstreaminputsupplier = Resources.newInputStreamSupplier(resource); InputStream input = inputstreaminputsupplier.getinput(); ByteSource bytesource = Resources.asByteSource(resource); InputStream inputstream = bytesource.openstream(); newinputstreamsupplier 和 asbytesource 函数都是以字节形式来读取 resource 中的数据 可以看出, 两个函数最后都可以转换成我们熟悉的 InputStream 来操作 InputSupplier<InputStreamReader> inputsrs = Resources.newReaderSupplier(resource, Charsets.UTF_8); Reader input1 = inputsrs.getinput(); CharSource charsource = Resources.asCharSource(resource, Charsets.UTF_8); Reader reader = charsource.openstream(); 2 / 5

newreadersupplier 和 ascharsource 函数都是以字符的形式来读取 resource 中的数据 同上面两个函数一样, 这里说的两个函数都可以转换为 Reader 类操作 byte[] bytes = Resources.toByteArray(resource); String string = Resources.toString(resource, Charsets.UTF_8); 上面两个函数可以直接将 resource 中的资源数据转换为字节数组和字符数组形式 List<String> stringlist = Resources.readLines(resource, Charsets.UTF_8); Lines lines = (Lines)Resources.readLines(resource, Charsets.UTF_8, new LineProcessor<Object>() { Lines lines = new Lines(); public boolean processline(string line) throws IOException { return lines.getstringlist().add(line); ); public Lines getresult() { return lines; Lines 类定义 public class Lines { private List<String> stringlist; public Lines() { stringlist = Lists.newArrayList(); public List<String> getstringlist() { return stringlist; public void setstringlist(list<string> stringlist) { this.stringlist = stringlist; 3 / 5

public String tostring() { return stringlist.tostring(); 上面两个函数都是从 resource 中以 Charsets.UTF_8 字符集形式一行一行的读取里面的内容 第二个函数我们自己实现了 LineProcessor callback 类, 可以看出, 我们可以对读取到的每一个进行相应的处理, 非常的方便 其实,Resources.readLines(resource, Charsets.UTF_8); 函数内部还是调用了 readlines(url url, Charset charset, LineProcessor callback) 函数, 其实现如下 : public static List<String> readlines(url url, Charset charset) throws IOException { return readlines(url, charset, new LineProcessor<List<String>>() { final List<String> result = Lists.newArrayList(); public boolean processline(string line) { result.add(line); return true; public List<String> getresult() { return result; ); 最后一个要说的函数是 copy(url from, OutputStream to), 这个函数可以将数据复制到所有 OutputStream 子类对象中, 如下 : Resources.copy(resource, new FileOutputStream("/wyp.txt")); 上面代码将 resource 中的数据复制到 wyp.txt 文件中 ( 完 )

Powered by TCPDF (www.tcpdf.org) 本博客文章除特别声明, 全部都是原创! 转载本文请加上 : 转载自过往记忆 (https://www.iteblog.com/) 本文链接 : () 5 / 5