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

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. 完美拖拽 &&仿腾讯微博效果&& 自定义多级右键菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. requirejs主流程解读

    近期读了下requirejs源代码,那叫一个复杂啊(相对于seajs来说).整理出了逻辑的主要部分的流程图,感兴趣的能够看下.欢迎批评指正~ http://www.gliffy.com/go/publ ...

  3. Windows web服务器搭建---阿里云

      前提步骤: 1)申请域名---- 阿里云.花生壳.万维网等等. 2)云主机购买-----阿里云.腾讯云.京东云等等. 3)网站备案,此步骤最长. 4)建立网站 5)部署网站 下面主要介绍如何部署网 ...

  4. Iterative (non-recursive) Merge Sort

    An iterative way of writing merge sort: #include <iostream> using namespace std; void merge(in ...

  5. Devops成功的八大炫酷工具

    原文链接:http://www.infoworld.com/article/3031009/devops/8-more-cool-tools-for-devops-success.html 为自动化和 ...

  6. Linux下基于命令行的抓包方法

    大家可能都已经对著名的抓包工具Ethereal比较熟悉了,这里再介绍一种基于命令行的抓包工具tcpdump. 举例:抓本机1813端口上的数据,并将抓包结果保存在test.cap文件中 然后在本地可以 ...

  7. POJ1122_FDNY to the Rescue!(逆向建图+最短路树)

    FDNY to the Rescue! Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2368   Accepted: 72 ...

  8. git 修改远程仓库地址

    以前的老项目需要修改git路径,为了保留之前的上传记录和分支等可以通过以下方法解决这个问题 sourceTree项目远程仓库,直接修改origin路径,然后提交一个commit即可将项目上传到新的gi ...

  9. ubuntu中文乱码--添加中文字符集

    在Ubuntu支持中文后(方法见上篇文章),默认是UTF-8编码,而Windows中文版默认是GBK编码.为了一致性,通常要把Ubuntu的默认 编码改为GBK.当然你也可以不改,但这会导致我们在两个 ...

  10. Map 和 javaBean转换

    package com.siang.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.bean ...