`

Guava IO

 
阅读更多

Maven Dependency

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.fool.guava</groupId>
	<artifactId>guava</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>guava</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>19.0</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
	</dependencies>

</project>

 

Copy

@Test
public void testCopy() throws IOException {
	File original = new File("src/main/resources/original.txt");
	File copy = new File("src/main/resources/copy.txt");

	Files.copy(original, copy);
}

 

Move

@Test
public void testMove() throws IOException {
	File copy = new File("src/main/resources/copy.txt");
	File newFile = new File("src/main/resources/newFile.txt");

	Files.move(copy, newFile);
}

 

Hash

@Test
public void testHashFile() throws IOException {
	File file = new File("src/main/resources/hash.txt");

	HashCode hashCode = Files.hash(file, Hashing.md5());

	System.out.println(hashCode);
}

 

Write

@Test
public void testWrite() throws IOException {
	File file = new File("src/main/resources/lines.txt");

	Files.write("LiuBei\nGuanYu\nZhangFei", file, Charsets.UTF_8);

	String result = Files.toString(file, Charsets.UTF_8);
	String expectedValue = "LiuBei\nGuanYu\nZhangFei";

	assertThat(result, equalTo(expectedValue));
}

 

ReadLines

@Test
public void testReadLines() throws IOException {
	File file = new File("src/main/resources/lines.txt");

	List<String> expectedLines = Lists.newArrayList("LiuBei", "GuanYu", "ZhangFei");

	List<String> readLines = Files.readLines(file, Charsets.UTF_8);

	assertThat(readLines, equalTo(expectedLines));
}

 

ReadLinesWithProcessor

@Test
public void testReadLinesWithProcessor() throws IOException {
	File file = new File("src/main/resources/books.txt");

	List<String> expectedLines = Lists.newArrayList("SanGuoYanYi", "ShuiHuZhuan", "XiYouJi", "HongLouMeng");

	List<String> readLines = Files.readLines(file, Charsets.UTF_8, new LineProcessor<List<String>>() {

		private List<String> bookTitles = Lists.newArrayList();

		@Override
		public boolean processLine(String line) throws IOException {
			bookTitles.add(Iterables.get(Splitter.on(",").split(line), 1));
			return true;
		}

		@Override
		public List<String> getResult() {
			return bookTitles;
		}
	});

	assertThat(readLines, equalTo(expectedLines));
}

 

Append

@Test
public void testAppendingWritingToFile() throws IOException {
	File file = new File("src/main/resources/quote.txt");
	file.deleteOnExit();

	String hamletQuoteStart = "To be, or not to be";

	Files.write(hamletQuoteStart, file, Charsets.UTF_8);

	assertThat(Files.toString(file, Charsets.UTF_8), equalTo(hamletQuoteStart));

	String hamletQuoteEnd = ", that is the question";

	Files.append(hamletQuoteEnd, file, Charsets.UTF_8);

	assertThat(Files.toString(file, Charsets.UTF_8), equalTo(hamletQuoteStart + hamletQuoteEnd));

	String overwrite = "Overwriting the file";

	Files.write(overwrite, file, Charsets.UTF_8);

	assertThat(Files.toString(file, Charsets.UTF_8), equalTo(overwrite));
}

 

ByteSink

@Test
public void testByteSink() throws IOException {
	String expectedValue = "Hello World";

	File file = new File("src/main/resources/helloworld.txt");

	ByteSink byteSink = Files.asByteSink(file);

	byteSink.write("Hello World".getBytes());

	String result = Files.toString(file, Charsets.UTF_8);

	assertThat(result, equalTo(expectedValue));
}

 

ByteSource

@Test
public void testByteSource() throws IOException {
	File file = new File("src/main/resources/helloworld.txt");

	ByteSource byteSource = Files.asByteSource(file);

	byte[] result = byteSource.read();

	assertThat(result, equalTo(Files.toByteArray(file)));

	System.out.println(new String(result));

	String expectedResult = "lo World";
	long offset = 3;
	long len = 1000;

	ByteSource sliceSource = Files.asByteSource(file).slice(offset, len);

	result = sliceSource.read();

	assertEquals(expectedResult, new String(result));

	System.out.println(new String(result));
}

 

CharSink

@Test
public void testCharSink() throws IOException {
	String expectedValue = "Hello World";

	File file = new File("src/main/resources/helloworld.txt");

	CharSink charSink = Files.asCharSink(file, Charsets.UTF_8);
	charSink.write("Hello World");

	String result = Files.toString(file, Charsets.UTF_8);

	System.out.println(result);

	assertThat(result, equalTo(expectedValue));
}

 

CharSource

@Test
public void testCharSource() throws IOException {
	String expectedValue = "Hello World";

	File file = new File("src/main/resources/helloworld.txt");

	CharSource charSource = Files.asCharSource(file, Charsets.UTF_8);

	String result = charSource.read();

	System.out.println(result);

	assertThat(result, equalTo(expectedValue));
}

 

ByteStreams

@Test
public void testByteStreams() throws IOException {
	Closer closer = Closer.create();

	BufferedInputStream in = new BufferedInputStream(
			new FileInputStream(new File("src/main/resources/helloworld.txt")));

	closer.register(in);

	byte[] result = ByteStreams.toByteArray(in);

	closer.close();

	String expectedValue = "Hello World";

	assertThat(new String(result), equalTo(expectedValue));

	System.out.println(new String(result));
}

 

CharStreams

@Test
public void testCharStreams() throws IOException {
	Closer closer = Closer.create();

	BufferedReader reader = new BufferedReader(new FileReader(new File("src/main/resources/helloworld.txt")));

	closer.register(reader);

	String result = CharStreams.toString(reader);
	
	closer.close();

	String expectedValue = "Hello World";

	assertThat(new String(result), equalTo(expectedValue));
	
	System.out.println(result);
}

 

Closer

package org.fool.guava.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import com.google.common.io.Closer;

public class CloserTest {
	public static void main(String[] args) throws IOException {
		Closer closer = Closer.create();
		
		try {
			BufferedReader reader = new BufferedReader(new FileReader(new File("src/main/resources/reader.txt")));
			BufferedWriter writer = new BufferedWriter(new FileWriter(new File("src/main/resources/writer.txt")));
			
			closer.register(reader);
			closer.register(writer);
			
			String line;
			while ((line = reader.readLine()) != null) {
				writer.write(line);
			}
		} catch (Throwable t) {
			throw closer.rethrow(t);
		} finally {
			closer.close();
		}
	}
}

 

 

 

分享到:
评论

相关推荐

    guava-23.0.zip guava.jar guava

    6. **IO流操作**:Guava的Files、ByteStreams、CharStreams等类提供了对文件和流的操作,简化了文件读写和流转换。 7. **检查类**:Preconditions、Objects等类提供了参数检查和对象验证功能,有助于防止程序中的...

    Guava 工程项目包 有实例

    3. **IO 工具** - **流处理**:Guava 的 ByteStreams、CharStreams 和 Files 工具类提供了对输入/输出流的强大操作,如读写、转换和复制。 - **资源管理**:Closer 类可以帮助开发者更好地管理资源,确保在完成...

    guava-r07.zip

    Guava的IO库还支持异步I/O,使用ListenableFuture表示异步操作的结果,便于编写非阻塞代码。 总的来说,Guava库为Java开发者提供了一套强大且全面的工具集,极大地提升了开发效率和代码质量。无论是在大型企业级...

    guava-26.0-jre.zip

    9. **IO工具**:Guava提供了Files、CharStreams、ByteStreams等类,对Java标准IO进行了扩展,提供了更强大的读写操作和文件系统操作。 10. **时间与日期处理**:Guava提供了Date数学、TimeMath和ChronoUnit等类,以...

    guava14.0.1jar包

    6. **I/O操作**:Guava的IO类提供了对文件、输入/输出流的高效处理,包括读写操作、缓冲流、以及文件系统操作,使得处理文件更加简单。 7. **函数式编程**:Guava引入了函数式编程的概念,如Function、Predicate和...

    Guava及扩展组件资源大全:含最新及历史各版本Jar、源代码

    扩展组件包括guava-annotations、guava-base、guava-bootstrap、guava-collections、guava-concurrent、guava-gwt、guava-io、guava-parent、guava-primitives、listenablefuture、guava-testlib等。

    google guava 中文教程

    Guava的IO模块提供了流式处理的读写操作,如CharSource和ByteSource,以及Files工具类,可以简化文件操作。例如,Files.copy()方法可以方便地进行文件复制,Charsets类定义了常见的字符编码。 七、原子类与并发原语...

    guava-19.0.jar

    com.google.common.io com.google.common.net com.google.common.primitives com.google.common.util.concurrent 在线API doc:http://tool.oschina.net/apidocs/apidoc?api=guava 下载地址:...

    google guava

    Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...

    Google的Java常用类库Guava.zip

    com.google.common.io com.google.common.net com.google.common.primitives com.google.common.util.concurrent 在线API doc:...

    guava-r09.jar

    是Guava对`java.io.InputStream`接口的一个扩展,它允许你将多个输入流组合成一个逻辑上的单一输入流。这在你需要同时读取多个数据源,或者需要按顺序处理一系列输入流时非常有用。例如,如果你有多个文件需要合并或...

    guava 19.0开发文档

    Guava是Google开源的一个Java库,它提供了许多高级和实用的集合框架、缓存机制、并发工具、IO工具以及字符串处理等功能。Guava 19.0是该库的一个版本,包含了众多经过优化和测试的类与方法,适用于各种复杂的Java...

    guava1.9-jar和源码 附在线API地址

    Guava的IO工具提供了许多实用的类,如Files、ByteStreams和CharStreams等,它们简化了文件操作和流操作,比如便捷的读写文件、合并或分割流。 源码包的提供使得我们可以查看Guava的内部实现,理解其设计思想和优化...

    guava-18.0

    5. **I/O操作**:Guava的IO包提供了对文件、流和ByteSource/ByteSink的高级抽象,使I/O操作更加灵活和高效。 6. **函数式编程**:Guava引入了Function、Predicate等接口,支持函数式编程风格,便于编写无副作用的...

    guava源码src

    9. **Guava模块化**:Guava库被划分为多个模块,如core、cache、collections、io等,开发者可以根据项目需求选择引入,避免引入不必要的依赖。 通过阅读和理解Guava源码,开发者不仅可以学习到Java编程的高级技巧,...

    Guava入门指南培训PPT

    Guava提供了一套新的IO处理工具,这些工具能够更方便地读写文件、网络流等。 #### 七、其他特性 除了以上提到的功能之外,Guava还包括许多其他特性,如缓存机制、并发工具、原生类型支持等。 综上所述,Guava不仅...

    Guava 16.0 API (CHM格式)

     com.google.common.io:I/O工具包。  com.google.common.math:原始算术类型和超大数的运算工具包。  com.google.common.net:网络工具包。  com.google.common.primitives:八种原始类型和无符号类型的静态...

    guava使用实例

    Guava的`com.google.common.io`包提供了一系列方便的文件操作方法。例如,`Files.copy()`可以轻松地复制文件,`Files.asByteSource()`和`Files.asByteSink()`用于读写文件内容,而`Resources.getResource()`则帮助...

    谷歌guava的jar包和源码,值得收藏

    **谷歌Guava库详解** 谷歌Guava库是一个广泛使用的Java库,它提供了许多核心库的实用工具类,包括集合、缓存、并发、I/O、字符串处理、泛型 utilities、错误处理、网络、数学运算以及类加载器支持等多个方面。Guava...

    Guava 19 API ( CHM格式 )

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

Global site tag (gtag.js) - Google Analytics