版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/luo201227/article/details/36413279

程序员在开发过程中,使用文件的几率是相当大的,有时候,我们甚至须要几十秒内读取一下IO流中的数据。可是原生态的文件流的读写,一旦操作不当,就有可能出现内存溢出和打开文件数过多的异常错误,这一点在Linux环境下表现得尤其突出,所以使用好原生态的读写文件流真的非常重要!好啦,这里着重来讲一下Google的Guava对IO的操作升级。上一篇讲的Guava对Collection的优化,魅力之处尽在不言中了!

Ok,咱就上代码了!这里使用文件来做Demo:

/**
* @Description:
*
* @Title: FileGuava.java
* @Package com.joyce.guava.main
* @Copyright: Copyright (c) 2014
*
* @author Comsys-LZP
* @date 2014-6-26 下午01:18:18
* @version V2.0
*/
package com.joyce.guava.main; import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import com.google.common.base.Charsets;
import com.google.common.io.Files; /**
* @Description:Guava的文件
*
* @ClassName: FileGuava
* @Copyright: Copyright (c) 2014
*
* @author Comsys-LZP
* @date 2014-6-26 下午01:18:18
* @version V2.0
*/
public class FileGuava {
public static void main(String[] args) {
try {
File readFile = new File(System.getProperty("user.dir") + "/src/resources/showarp.txt");
StringBuilder content = new StringBuilder();
if (readFile.exists()) {
List<String> lines = readFile(readFile);
for (String string : lines) {
System.out.println(string);
content.append(string + "\n");
}
}
File writeFile = new File(System.getProperty("user.dir") + "/src/resources/showarp" + new SimpleDateFormat("yyyyMMdd").format(new Date())+ ".txt");
writeFile(content.toString(), writeFile);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* @Description: Guava文件读取
*
* @param file
* @return
*
* @Title: FileGuava.java
* @Copyright: Copyright (c) 2014
*
* @author Comsys-LZP
* @date 2014-6-26 下午01:20:50
* @version V2.0
*/
private static List<String> readFile(File file) throws Exception {
if (!file.exists()) {
return null;
}
return Files.readLines(file, Charsets.UTF_8);
} /**
* @Description: 从文件里获取有规则的数据
*
* @param file
* @return
*
* @Title: FileGuava.java
* @Copyright: Copyright (c) 2014
*
* @author Comsys-LZP
* @date 2014-6-26 下午01:56:42
* @version V2.0
*/
public List<String[]> readFileData(File file) throws Exception {
List<String[]> list = new ArrayList<String[]>();
for (String rLine : readFile(file)) {
list.add(rLine.split("\\s+"));
}
return list;
} /**
* @Description: Guava写文件
*
* @param content
* @param file
*
* @Title: FileGuava.java
* @Copyright: Copyright (c) 2014
*
* @author Comsys-LZP
* @date 2014-6-26 下午01:32:06
* @version V2.0
*/
private static void writeFile(String content, File file) throws Exception {
if (!file.exists()) {
file.createNewFile();
}
Files.write(content, file, Charsets.UTF_8);
}
}

文件里的内容为:

代码运行后的效果:

而且将内容写到了另外一个文件里,用起来是不是非常easy呢!

这领域真的是好东西特别多。就看大伙儿肯不肯动手动脑多学学!!!附上本人资源下载地址:http://download.csdn.net/download/luo201227/7581845

Google的Guava之IO升华的更多相关文章

  1. Google的Guava它Collection升华

    至于Guava这是不是在这里说.一个已被提上一个非常特殊的! 这主要是为了分享Guava对于一些升华处理组.井,不多说了,直接在代码: package com.joyce.guava.bean; /* ...

  2. Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码

    原文出处: oschina (API:http://ifeve.com/category/framework/guava-2/ JAR DOC Source 链接:http://pan.baidu.c ...

  3. Google的Guava类库简介(转)

    说明:信息虽然有点旧,至少可以先了解个大概. Guava是一个Google的基于Java的类库集合的扩展项目,包括collections, caching, primitives support, c ...

  4. 有关google的guava工具包详细说明

    Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库. 目前主要包含: com.google.common.annotations c ...

  5. Google的Guava工具类splitter和apache stringutil对比 编辑

    一直用的是apache的stringutil工具类,其实google的工具类项目 guava中居然也有字符串的分隔类splitter的,在 http://code.google.com/p/guava ...

  6. google中guava类库:AsyncEventBus

    1.guava事件总线(AsyncEventBus)使用 1.1引入依赖 <dependency> <groupId>com.google.guava</groupId& ...

  7. spring中添加google的guava缓存(demo)

    1.pom文件中配置 <dependencies> <dependency> <groupId>org.springframework</groupId> ...

  8. 使用 Google Guava 美化你的 Java 代码

    文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...

  9. 开源介绍:Google Guava、Google Guice、Joda-Time

    一.Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency lib ...

随机推荐

  1. 屏蔽NumberPicker点击可输入问题

    1.xml布局中添加属性:Android:descendantFocusability="blocksDescendants" 2.代码中设置:numberPicker.setDe ...

  2. Oracle基础(一) Oracle的安装和卸载

    一.数据库的基本概念. 数据库就是数据存储的仓库,可以更快的查询.处理.统计数据,还可以保持数据的一致性.共享性和安全性,方便只能的分析,产生新的有用的信息. 1.数据库的发展阶段: (1)萌芽阶段: ...

  3. useradd(总结)

    useradd,一条简单的语句,会引起六个文件的变化 举例一: useradd sc 1.可以看到在最后一行,多了一个用户.cat /etc/passwd [有一个字段为X,代表还没有密码] 2.密码 ...

  4. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  5. 转: Appium ---移动自动化测试

    转自:http://www.cnblogs.com/nbkhic/p/3803830.html 什么是appium? 下面这段介绍来自于appium的官网. Appium is an open-sou ...

  6. Cocos2d-x教程(35)-三维拾取Ray-AABB碰撞检測算法

    欢迎增加Cocos2d-x 交流群:193411763 转载时请注明原文出处 :http://blog.csdn.net/u012945598/article/details/39927911 --- ...

  7. vivado2013.4和modelsim联合仿真

    vivado2013.4和modelsim联合仿真                           Hello,Panda        最近在做Zynq的项目,曾经尝试使用ISE+PlanAhe ...

  8. windows 下 Rabbitmq 配置远程访问

    1.运行-->CMD 2.定位到Rabbitmq 安装路径下的 sbin目录,执行 :rabbitmq-plugins enable rabbitmq_management 3.登录web控制台 ...

  9. Maven学习----dependencies与dependencyManagement的区别(转)

    转自:http://blog.csdn.net/liutengteng130/article/details/46991829 1.DepencyManagement应用场景 当我们的项目模块很多的时 ...

  10. windows 和 linux 上 循环读取文件名称的区别和方法

    function showGetFileName($type){ $url="/opt/mobile_system/gscdn"; //另一台服务器映射到linux过来的路径. # ...