{"id":1178,"date":"2016-08-18T17:47:31","date_gmt":"2016-08-18T09:47:31","guid":{"rendered":"http:\/\/www.yeetrack.com\/?p=1178"},"modified":"2016-08-18T23:10:30","modified_gmt":"2016-08-18T15:10:30","slug":"%e8%b5%b0%e8%bf%91guava%e4%b8%83-%e6%96%87%e4%bb%b6%e6%93%8d%e4%bd%9c","status":"publish","type":"post","link":"https:\/\/www.yeetrack.com\/?p=1178","title":{"rendered":"\u8d70\u8fd1Guava(\u4e03): \u6587\u4ef6\u64cd\u4f5c"},"content":{"rendered":"<div class=\"blog-body\">\n<div class=\"BlogContent\">\n<h1>\u6587\u4ef6\u64cd\u4f5c\uff1a<\/h1>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u590d\u5236\u6587\u4ef6<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File original  = new File(\"path\/to\/original\");\nFile copy = new File(\"path\/to\/copy\");\nFiles.copy(original, copy);<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u6587\u4ef6\u79fb\u52a8\/\u91cd\u547d\u540d<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File original = new File(\"src\/main\/resources\/copy.txt\");<!--more-->\n\n\nFile newFile = new File(\"src\/main\/resources\/newFile.txt\");\ntry{\n   Files.move(original, newFile); \/\/\u79fb\u52a8\u6216\u91cd\u547d\u540d\u6587\u4ef6\uff0c\u7c7b\u4f3cUnix\u4e2d\u7684mv\n}catch (IOException e){\n   e.printStackTrace();\n}<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u5c06\u6587\u4ef6\u8bfb\u53d6\u4e3a\u5b57\u7b26\u4e32\u5217\u8868<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>List&lt;String&gt; readLines = Files.readLines(file, Charsets.UTF_8);<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u4e3a\u6587\u4ef6\u751f\u6210hash\u503c<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File file = new File(\"src\/main\/resources\/sampleTextFileOne.txt\");\nHashCode hashCode = Files.hash(file, Hashing.md5());\nSystem.out.println(hashCode);<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u5199\u6216\u8ffd\u52a0\u6587\u4ef6<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File file = new File(\"quote1.txt\");\nString hamletQuoteStart = \"To be, or not to be\";\nFiles.write(hamletQuoteStart,file, Charsets.UTF_8);\/\/\u5199\u6587\u4ef6\n         \nString hamletQuoteEnd = \",that is the question\";\nFiles.append(hamletQuoteEnd,file,Charsets.UTF_8); \/\/\u8ffd\u52a0\u6587\u4ef6\n         \nString overwrite = \"Overwriting the file\";\nFiles.write(overwrite, file, Charsets.UTF_8); \/\/\u91cd\u5199\u6587\u4ef6<\/code><\/pre>\n<h2>ByteSource\u7c7b<\/h2>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\"><span style=\"color: #e53333; font-size: 16px;\">ByteSource<\/span>\u4ee3\u8868\u4e00\u4e2a<span style=\"color: #e53333; font-size: 16px;\">\u53ef\u8bfb\u7684<\/span>\u5b57\u8282\u6e90<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u4ece\u6587\u4ef6\u521b\u5efaByteSource<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File f1 = new File(\"quote1.txt\");\nByteSource byteSource = Files.asByteSource(f1);\nbyte[] readBytes = byteSource.read();\nSystem.out.println(readBytes);<\/code><\/pre>\n<h2>ByteSink\u7c7b<\/h2>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\"><span style=\"color: #e53333; font-size: 16px;\">ByteSink<\/span>\u4ee3\u8868\u4e00\u4e2a<span style=\"color: #e53333; font-size: 16px;\">\u53ef\u5199\u7684<\/span>\u5b57\u8282\u6e90<\/span><\/li>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u521b\u5efaByteSink<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File dest = new File(\"destfile.txt\");\nByteSink byteSink = Files.asByteSink(dest);\nFile file = new File(\"srcfile.txt\");\nbyteSink.write(Files.toByteArray(file));<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u5c06ByteSource\u590d\u5236\u5230ByteSink<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>File dest = new File(\"destfile.txt\");\nFile source = new File(\"srcfile.txt\");\nByteSource byteSource = Files.asByteSource(source);\nByteSink byteSink = Files.asByteSink(dest);\nbyteSource.copyTo(byteSink);<\/code><\/pre>\n<h2>ByteStreams\u548cCharStreams<\/h2>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u9650\u5236\u8f93\u5165\u6d41\u5927\u5c0f<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>ByteStreams.limit(inputStream, 10)<\/code><\/pre>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u5408\u5e76CharStreams<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>@Test\npublic void joinCharStreamsTest() throws Exception {\n\tFile f1 = new File(\"file1.txt\");\n\tFile f2 = new File(\"file2.txt\");\n\tFile f3 = new File(\"file3.txt\");\n\tFile joinedOutput = new File(\"file123.txt\");\n\n\tList&lt;InputSupplier&lt;InputStreamReader&gt;&gt; inputSuppliers = getInputSuppliers(f1, f2, f3);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0InputSupplier&lt;Reader&gt; joinedSupplier = CharStreams.join(inputSuppliers);\n\tOutputSupplier&lt;OutputStreamWriter&gt; outputSupplier = Files.newWriterSupplier(joinedOutput, Charsets.UTF_8);\n\tCharStreams.copy(joinedSupplier, outputSupplier);\n\tString joinedOutputString = joinFiles(joinedOutput);\n\tSystem.out.println(joinedOutputString);\n}\n\/\/\u5c06\u591a\u4e2a\u6587\u4ef6\u5408\u5e76\u4e3a\u5b57\u7b26\u4e32\nprivate String joinFiles(File... files) throws IOException {\n\tStringBuilder builder = new StringBuilder();\n\tfor (File file : files) {\n\t\tbuilder.append(Files.toString(file, Charsets.UTF_8));\n\t}\n\treturn builder.toString();\n}\n\/\/\u5c06\u591a\u4e2a\u6587\u4ef6\u8f6c\u6362\u4e3aInputSuppler&lt;InputStreamReader&gt;\u7c7b\u578b\u7684\u5217\u8868\nprivate List&lt;InputSupplier&lt;InputStreamReader&gt;&gt; getInputSuppliers(File... files) {\n\tList&lt;InputSupplier&lt;InputStreamReader&gt;&gt; list = Lists.newArrayList();\n\tfor (File file : files) {\n\t\tlist.add(Files.newReaderSupplier(file, Charsets.UTF_8));\n\t}\n\treturn list;\n}<\/code><\/pre>\n<h2>Closer\u7c7b<\/h2>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\"><span style=\"color: #e53333; font-size: 16px;\">Cl<\/span><span style=\"color: #e53333; font-size: 16px;\">oser<\/span>\u53ef\u4ee5\u4fdd\u8bc1\u6ce8\u518c\u7684<span style=\"color: #e53333; font-size: 16px;\">Closable<\/span>\u5bf9\u8c61\uff0c\u5728Closer\u5173\u95ed\u65f6\uff0c\u6ce8\u518c\u7684Closable\u5bf9\u8c61\u4e5f\u4f1a\u88ab\u5173\u95ed\u3002<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>Closer closer = Closer.create();\ntry {\n\tFile destination = new File(\"destfile.txt\");\n\tBufferedReader reader = new BufferedReader(new FileReader(\"srcfile.txt\"));\n\tBufferedWriter writer = new BufferedWriter(new FileWriter(destination));\n\tcloser.register(reader);\n\tcloser.register(writer);\n\tString line;\n\twhile ((line = reader.readLine()) != null) {\n\t\twriter.write(line);\n\t}\n} catch (Throwable t) {\n\tthrow closer.rethrow(t);\n} finally {\n\tcloser.close();\n}<\/code><\/pre>\n<h2>BaseEncoding\u7c7b<\/h2>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">BaseEncoding\u9488\u5bf9\u5b57\u8282\u7801\u7684\u7f16\u7801\u5de5\u4f5c\u3002<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"line-height: 1.5; font-size: 12.5px;\">\u4e00\u4e9b\u7528\u4f8b<\/span><\/li>\n<\/ul>\n<pre class=\"brush:java; toolbar: true; auto-links: false;\"><code>@Test\npublic void encodeDecodeTest() throws Exception {\n\tFile file = new File(\"srcfile.txt\");\n\tbyte[] bytes = Files.toByteArray(file);\n\tBaseEncoding baseEncoding = BaseEncoding.base64();\n\tString encoded = baseEncoding.encode(bytes); \/\/ \u5c06\u5b57\u8282\u4ee5Base64\u7f16\u7801\n}\n\n@Test\npublic void encodeByteSinkTest() throws Exception {\n\tFile srcFile = new File(\"srcfile.txt\");\n\tFile encodedFile = new File(\"encodedfile.txt\");\n\tCharSink charSink = Files.asCharSink(encodedFile, Charsets.UTF_8);\n\tBaseEncoding baseEncoding = BaseEncoding.base64();\n\tByteSink byteSink = baseEncoding.encodingSink(charSink); \/\/\u5c06charSink\u8f6c\u4e3aByteSink\n\tByteSource byteSource = Files.asByteSource(srcFile);\n\tbyteSource.copyTo(byteSink); \/\/copy ByteSource to ByteSink\n\tString encodedBytes = baseEncoding.encode(byteSource.read());\n}<\/code><\/pre>\n<p>\u4ee5\u4e0a\u5c31\u662fGuava\u7684\u6587\u4ef6\u5904\u7406\u3002<\/p>\n<p>\u6765\u6e90:http:\/\/my.oschina.net\/indestiny\/blog\/219802<\/p>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"sugMlUQnZq\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1171\">\u8d70\u8fd1Guava(\u4e00): \u57fa\u672c\u5de5\u5177<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u4e00): \u57fa\u672c\u5de5\u5177\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1171&#038;embed=true#?secret=hwP3VT4dCd#?secret=sugMlUQnZq\" data-secret=\"sugMlUQnZq\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Y71aZiME0m\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1173\">\u8d70\u8fd1Guava(\u4e8c): \u51fd\u6570\u5f0f\u7f16\u7a0b<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u4e8c): \u51fd\u6570\u5f0f\u7f16\u7a0b\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1173&#038;embed=true#?secret=66YEjr1ExY#?secret=Y71aZiME0m\" data-secret=\"Y71aZiME0m\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"tGltaU3qvC\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1174\">\u8d70\u8fd1Guava(\u4e09): \u96c6\u5408<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u4e09): \u96c6\u5408\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1174&#038;embed=true#?secret=MHJ4EhMQ2e#?secret=tGltaU3qvC\" data-secret=\"tGltaU3qvC\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"EK5bqg4KMR\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1175\">\u8d70\u8fd1Guava(\u56db): \u5e76\u53d1<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u56db): \u5e76\u53d1\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1175&#038;embed=true#?secret=BIZUTxZ8Am#?secret=EK5bqg4KMR\" data-secret=\"EK5bqg4KMR\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"HCbxk87ZHa\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1176\">\u8d70\u8fd1Guava(\u4e94): \u7f13\u5b58<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u4e94): \u7f13\u5b58\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1176&#038;embed=true#?secret=x17vmYCqEj#?secret=HCbxk87ZHa\" data-secret=\"HCbxk87ZHa\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"tGaercj51R\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1177\">\u8d70\u8fd1Guava(\u516d): \u4e8b\u4ef6\u603b\u7ebfEventBus<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u516d): \u4e8b\u4ef6\u603b\u7ebfEventBus\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1177&#038;embed=true#?secret=vs01haWx87#?secret=tGaercj51R\" data-secret=\"tGaercj51R\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<div class=\"video-container\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"XEExqUVqPt\"><p><a href=\"https:\/\/www.yeetrack.com\/?p=1178\">\u8d70\u8fd1Guava(\u4e03): \u6587\u4ef6\u64cd\u4f5c<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u300a\u8d70\u8fd1Guava(\u4e03): \u6587\u4ef6\u64cd\u4f5c\u300b\u2014\u7a7a\u7a7a\u535a\u5ba2\" src=\"https:\/\/www.yeetrack.com\/?p=1178&#038;embed=true#?secret=rjrn1wa17P#?secret=XEExqUVqPt\" data-secret=\"XEExqUVqPt\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u4ef6\u64cd\u4f5c\uff1a \u590d\u5236\u6587\u4ef6 File original = new File(&#8220;path\/to\/original&#8221;); File copy = new File(&#8220;path\/to\/copy&#8221;); Files&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[33],"tags":[65,8],"class_list":["post-1178","post","type-post","status-publish","format-standard","hentry","category-coding","tag-guava","tag-java"],"views":6169,"_links":{"self":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/1178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1178"}],"version-history":[{"count":1,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/1178\/revisions"}],"predecessor-version":[{"id":1191,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/1178\/revisions\/1191"}],"wp:attachment":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}