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(); } } }
相关推荐
6. **IO流操作**:Guava的Files、ByteStreams、CharStreams等类提供了对文件和流的操作,简化了文件读写和流转换。 7. **检查类**:Preconditions、Objects等类提供了参数检查和对象验证功能,有助于防止程序中的...
3. **IO 工具** - **流处理**:Guava 的 ByteStreams、CharStreams 和 Files 工具类提供了对输入/输出流的强大操作,如读写、转换和复制。 - **资源管理**:Closer 类可以帮助开发者更好地管理资源,确保在完成...
Guava的IO库还支持异步I/O,使用ListenableFuture表示异步操作的结果,便于编写非阻塞代码。 总的来说,Guava库为Java开发者提供了一套强大且全面的工具集,极大地提升了开发效率和代码质量。无论是在大型企业级...
9. **IO工具**:Guava提供了Files、CharStreams、ByteStreams等类,对Java标准IO进行了扩展,提供了更强大的读写操作和文件系统操作。 10. **时间与日期处理**:Guava提供了Date数学、TimeMath和ChronoUnit等类,以...
6. **I/O操作**:Guava的IO类提供了对文件、输入/输出流的高效处理,包括读写操作、缓冲流、以及文件系统操作,使得处理文件更加简单。 7. **函数式编程**:Guava引入了函数式编程的概念,如Function、Predicate和...
扩展组件包括guava-annotations、guava-base、guava-bootstrap、guava-collections、guava-concurrent、guava-gwt、guava-io、guava-parent、guava-primitives、listenablefuture、guava-testlib等。
Guava的IO模块提供了流式处理的读写操作,如CharSource和ByteSource,以及Files工具类,可以简化文件操作。例如,Files.copy()方法可以方便地进行文件复制,Charsets类定义了常见的字符编码。 七、原子类与并发原语...
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开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...
com.google.common.io com.google.common.net com.google.common.primitives com.google.common.util.concurrent 在线API doc:...
是Guava对`java.io.InputStream`接口的一个扩展,它允许你将多个输入流组合成一个逻辑上的单一输入流。这在你需要同时读取多个数据源,或者需要按顺序处理一系列输入流时非常有用。例如,如果你有多个文件需要合并或...
Guava是Google开源的一个Java库,它提供了许多高级和实用的集合框架、缓存机制、并发工具、IO工具以及字符串处理等功能。Guava 19.0是该库的一个版本,包含了众多经过优化和测试的类与方法,适用于各种复杂的Java...
Guava的IO工具提供了许多实用的类,如Files、ByteStreams和CharStreams等,它们简化了文件操作和流操作,比如便捷的读写文件、合并或分割流。 源码包的提供使得我们可以查看Guava的内部实现,理解其设计思想和优化...
5. **I/O操作**:Guava的IO包提供了对文件、流和ByteSource/ByteSink的高级抽象,使I/O操作更加灵活和高效。 6. **函数式编程**:Guava引入了Function、Predicate等接口,支持函数式编程风格,便于编写无副作用的...
9. **Guava模块化**:Guava库被划分为多个模块,如core、cache、collections、io等,开发者可以根据项目需求选择引入,避免引入不必要的依赖。 通过阅读和理解Guava源码,开发者不仅可以学习到Java编程的高级技巧,...
Guava提供了一套新的IO处理工具,这些工具能够更方便地读写文件、网络流等。 #### 七、其他特性 除了以上提到的功能之外,Guava还包括许多其他特性,如缓存机制、并发工具、原生类型支持等。 综上所述,Guava不仅...
com.google.common.io:I/O工具包。 com.google.common.math:原始算术类型和超大数的运算工具包。 com.google.common.net:网络工具包。 com.google.common.primitives:八种原始类型和无符号类型的静态...
Guava的`com.google.common.io`包提供了一系列方便的文件操作方法。例如,`Files.copy()`可以轻松地复制文件,`Files.asByteSource()`和`Files.asByteSink()`用于读写文件内容,而`Resources.getResource()`则帮助...
**谷歌Guava库详解** 谷歌Guava库是一个广泛使用的Java库,它提供了许多核心库的实用工具类,包括集合、缓存、并发、I/O、字符串处理、泛型 utilities、错误处理、网络、数学运算以及类加载器支持等多个方面。Guava...
Guava 中文是石榴的意思,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库。 目前主要包含: com.google.common.annotations com.google.common.base com.google.common.collect ...