{"id":936,"date":"2018-09-17T18:37:49","date_gmt":"2018-09-17T09:37:49","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=936"},"modified":"2019-10-04T02:02:07","modified_gmt":"2019-10-03T17:02:07","slug":"file-copy","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/vi\/blog\/java\/sao-chep-tap-tin","title":{"rendered":"Sao ch\u00e9p t\u1ec7p Java (thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m)"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\">Sao ch\u00e9p t\u1ec7p Java (thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m)<\/a><\/h2>\n<p>\nTrong Java <strong>java.io.InputStream<\/strong>,<strong>java.io.OutputStream<\/strong> T\u1ea1i<br \/>\nGi\u1edbi thi\u1ec7u m\u1ed9t ch\u01b0\u01a1ng tr\u00ecnh m\u1eabu th\u1ef1c hi\u1ec7n x\u1eed l\u00fd sao ch\u00e9p b\u1eb1ng lu\u1ed3ng \u0111\u1ea7u v\u00e0o\/\u0111\u1ea7u ra.<br \/>\nTrong x\u1eed l\u00fd sao ch\u00e9p b\u1eb1ng lu\u1ed3ng, ngay c\u1ea3 c\u00e1c t\u1ec7p l\u1edbn c\u0169ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c sao ch\u00e9p t\u01b0\u01a1ng \u0111\u1ed1i nhanh b\u1eb1ng c\u00e1ch t\u0103ng k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc.<br \/>Trong ch\u01b0\u01a1ng tr\u00ecnh m\u1eabu, k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc d\u1eef li\u1ec7u c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh b\u1eb1ng m\u1ed9t \u0111\u1ed1i s\u1ed1.\n<\/p>\n<p>\nV\u00f9ng \u0111\u1ec7m \u0111\u1ecdc \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh \u0111\u01b0\u1ee3c b\u1ea3o m\u1eadt trong v\u00f9ng \u0111\u1ec7m JavaVM, do \u0111\u00f3, vi\u1ec7c s\u1eed d\u1ee5ng v\u00f9ng \u0111\u1ec7m qu\u00e1 l\u1edbn s\u1ebd d\u1eabn \u0111\u1ebfn hi\u1ec7u qu\u1ea3 k\u00e9m. V\u00ec v\u1eady, ch\u00fang t\u00f4i c\u0169ng ki\u1ec3m tra k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc d\u1eef li\u1ec7u hi\u1ec7u qu\u1ea3 khi sao ch\u00e9p t\u1ec7p.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">ch\u01b0\u01a1ng tr\u00ecnh m\u1eabu<\/a><\/h2>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">\/**<br \/>\n * \u30b3\u30d4\u30fc\u5143\u306e\u30d1\u30b9[srcPath]\u304b\u3089\u30b3\u30d4\u30fc\u5148\u306e\u30d1\u30b9[destPath]\u3078\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc<br \/>\n * \u3092\u884c\u3044\u307e\u3059\u3002<br \/>\n * @param srcPath    \u30b3\u30d4\u30fc\u5143\u306e\u30d1\u30b9<br \/>\n * @param destPath    \u30b3\u30d4\u30fc\u5148\u306e\u30d1\u30b9<br \/>\n * @param bufferSize    \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba(KB)\u3067\u3059\u3002<br \/>\n * @throws IOException    \u4f55\u3089\u304b\u306e\u5165\u51fa\u529b\u51e6\u7406\u4f8b\u5916\u304c\u767a\u751f\u3057\u305f\u5834\u5408<br \/>\n *\/<br \/>\npublic static void copyStream(String srcPath, String destPath,<br \/>\n    int bufferSize) throws IOException {<br \/>\n    InputStream in = new FileInputStream(srcPath);<br \/>\n    OutputStream os = new FileOutputStream(destPath);<br \/>\n    copyStream(in, os, bufferSize);<br \/>\n}<\/p>\n<p>\/**<br \/>\n * Ghi d\u1eef li\u1ec7u t\u1eeb lu\u1ed3ng \u0111\u1ea7u v\u00e0o sang lu\u1ed3ng \u0111\u1ea7u ra.<br \/>\n *Lu\u1ed3ng \u0111\u1ea7u v\u00e0o\/\u0111\u1ea7u ra s\u1ebd b\u1ecb \u0111\u00f3ng sau khi qu\u00e1 tr\u00ecnh sao ch\u00e9p ho\u00e0n t\u1ea5t.<br \/>\n * @param trong lu\u1ed3ng \u0111\u1ea7u v\u00e0o<br \/>\n * Lu\u1ed3ng \u0111\u1ea7u ra c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh @param<br \/>\n * @param bufferSize K\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc d\u1eef li\u1ec7u (KB).<br \/>\n * @throws IOException N\u1ebfu x\u1ea3y ra m\u1ed9t s\u1ed1 ngo\u1ea1i l\u1ec7 x\u1eed l\u00fd \u0111\u1ea7u v\u00e0o\/\u0111\u1ea7u ra<br \/>\n *\/<br \/>\npublic static void copyStream(InputStream in, OutputStream os,<br \/>\n    int bufferSize) n\u00e9m IOException {<br \/>\n    int len = -1;<br \/>\n    byte[] b = byte m\u1edbi[bufferSize * 1024];<br \/>\n    th\u1eed {<br \/>\n        while ((len = in.read(b, 0, b.length)) != -1) {<br \/>\n            os.write(b, 0, len);<br \/>\n        }<br \/>\n        os.flush();<br \/>\n    } Cu\u1ed1i c\u00f9ng {<br \/>\n        n\u1ebfu (trong != null) {<br \/>\n            th\u1eed {<br \/>\n                ghim theo();<br \/>\n            } b\u1eaft (IOException e) {<br \/>\n                e.printStackTrace();<br \/>\n            }<br \/>\n        }<br \/>\n        n\u1ebfu (os != null) {<br \/>\n            th\u1eed {<br \/>\n                os.close();<br \/>\n            } b\u1eaft (IOException e) {<br \/>\n                e.printStackTrace();<br \/>\n            }<br \/>\n        }<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<h2 class=\"common_title\"><a name=\"3\">ch\u1ea5p h\u00e0nh<\/a><\/h2>\n<p>\n\u0110\u1ec3 sao ch\u00e9p t\u1ec7p ch\u01b0\u01a1ng tr\u00ecnh m\u1eabu, ch\u00fang t\u00f4i \u0111\u00e3 chu\u1ea9n b\u1ecb t\u1ec7p 100 MB &quot;100M.txt&quot; ngay trong \u1ed5 C. Trong ch\u01b0\u01a1ng tr\u00ecnh m\u1eabu, <i>C:\\100M.txt<\/i> , \u0111\u1ecdc d\u1eef li\u1ec7u theo \u0111\u01a1n v\u1ecb k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m 1000KB. <i>C:\\a.txt<\/i>  Sao ch\u00e9p v\u00e0o.<\/p>\n<p>M\u1eabu \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n trong m\u00f4i tr\u01b0\u1eddng sau.<br \/>\nH\u1ec7 \u0111i\u1ec1u h\u00e0nh: WindowsXP<br \/>\nCPU: Athlon 1.46GHz<br \/>\nB\u1ed9 nh\u1edb: 1GB<br \/>\nJRE: 1.6.4\n<\/p>\n<p>\u25c6V\u00ed d\u1ee5 th\u1ef1c thi<\/p>\n<pre class=\"sample_src\">\/** * V\u00ed d\u1ee5 th\u1ef1c thi * @param args *\/ public static void main(String[] args) { try { copyStream(&quot;C:\\\\100M.txt&quot;, &quot;C:\\\\a.txt&quot;,1000); } b\u1eaft (IOException e) { e.printStackTrace(); } }\r\n<\/pre>\n<p>\u25c6K\u1ebft qu\u1ea3 th\u1ef1c hi\u1ec7n<br \/>\n<a href=\"https:\/\/chat-messenger.com\/images\/file_copy.jpg\" target=\"_blank\"><br \/>\n<img src=\"https:\/\/chat-messenger.com\/images\/file_copy.jpg\" alt=\"\" border=\"0\"><\/a><br clear=\"all\"><\/p>\n<h2 class=\"common_title\"><a name=\"4\">Thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m<\/a><\/h2>\n<p>\n\u0110\u1ec3 ki\u1ec3m tra k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc d\u1eef li\u1ec7u hi\u1ec7u qu\u1ea3 khi sao ch\u00e9p t\u1ec7p, h\u00e3y s\u1eed d\u1ee5ng \u0111\u1ed1i s\u1ed1 th\u1ee9 ba c\u1ee7a copyStream l\u00e0m<br \/>\nK\u1ebft qu\u1ea3 x\u1eed l\u00fd b\u1ea3n sao t\u01b0\u01a1ng t\u1ef1 \u1edf c\u00e1c \u0111\u01a1n v\u1ecb 1KB, 100KB, 1000KB v\u00e0 10000KB \u0111\u01b0\u1ee3c t\u00f3m t\u1eaft d\u01b0\u1edbi \u0111\u00e2y.<br \/>\n<img src=\"https:\/\/chat-messenger.com\/images\/file_copy_stream_reslt.jpg\" alt=\"\" border=\"0\"><br clear=\"all\"><br \/>\n<br \/>\nM\u1eb7c d\u00f9 kh\u00f4ng th\u1ec3 k\u1ebft lu\u1eadn ch\u1ec9 t\u1eeb c\u00e1c k\u1ebft qu\u1ea3 tr\u00ean, nh\u01b0ng n\u1ebfu b\u1ea1n ch\u1ec9 \u0111\u1ecbnh k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m \u0111\u1ecdc d\u1eef li\u1ec7u theo \u0111\u01a1n v\u1ecb 1000KB,<br \/>\nK\u1ebft qu\u1ea3 cho th\u1ea5y n\u00f3 hi\u1ec7u qu\u1ea3 v\u1ec1 m\u1eb7t s\u1eed d\u1ee5ng heap v\u00e0 th\u1eddi gian x\u1eed l\u00fd trong qu\u00e1 tr\u00ecnh x\u1eed l\u00fd sao ch\u00e9p.<br \/>\nK\u1ebft qu\u1ea3 t\u01b0\u01a1ng t\u1ef1 c\u0169ng \u0111\u1ea1t \u0111\u01b0\u1ee3c ngay c\u1ea3 khi k\u00edch th\u01b0\u1edbc t\u1ec7p t\u0103ng l\u00ean (kho\u1ea3ng 1GB).<\/p>\n<p>M\u1eb7t kh\u00e1c, khi sao ch\u00e9p m\u1ed9t t\u1eadp tin nh\u1ecf (kho\u1ea3ng 1MB tr\u1edf xu\u1ed1ng), vi\u1ec7c t\u0103ng k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m s\u1ebd r\u1ea5t l\u00e3ng ph\u00ed, v\u00ec v\u1eady t\u00f4i ngh\u0129 t\u1ed1t h\u01a1n n\u00ean ch\u1ec9 \u0111\u1ecbnh kho\u1ea3ng 100KB.\n<\/p>\n\n<h2 class=\"common_title\"><a name=\"5\">S\u1eed d\u1ee5ng FileChannel \u0111\u1ec3 c\u00f3 t\u1ed1c \u0111\u1ed9 nhanh h\u01a1n<\/a><\/h2>\n<p><a name=\"5\"><\/a><\/p>\n<p><a name=\"5\"><br \/>\n\u3000<strong>java.io.InputStream<\/strong>,<strong>java.io.OutputStream<\/strong><br \/>\nX\u1eed l\u00fd sao ch\u00e9p r\u1ea5t quan tr\u1ecdng trong vi\u1ec7c hi\u1ec3u c\u00e1c lu\u1ed3ng \u0111\u1ea7u v\u00e0o\/\u0111\u1ea7u ra, nh\u01b0ng<br \/>\nI\/O m\u1edbi \u0111\u01b0\u1ee3c gi\u1edbi thi\u1ec7u trong J2SE1.4 <strong>java.nio.channels.FileChannel#transferTo<\/strong><br \/>\nB\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng ph\u01b0\u01a1ng ph\u00e1p n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 sao ch\u00e9p t\u1eadp tin hi\u1ec7u qu\u1ea3 h\u01a1n.<br \/>\nTi\u1ebfp theo, t\u00f4i s\u1ebd ch\u1ec9 cho b\u1ea1n c\u00e1ch sao ch\u00e9p t\u1ec7p d\u1ec5 d\u00e0ng v\u00e0 nhanh ch\u00f3ng b\u1eb1ng FileChannel.<br \/>\n\u21d2 <\/a><a href=\"https:\/\/chat-messenger.com\/vi\/blog\/java\/chuyen-kenh-tap-tin-sang\/\"><strong>Sao ch\u00e9p t\u1ec7p Java (d\u1ec5 d\u00e0ng v\u00e0 nhanh ch\u00f3ng)<\/strong><\/a><br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Sao ch\u00e9p t\u1ec7p Java (thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m) java.io.InputStream trong Java, ja [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/936"}],"collection":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/comments?post=936"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"predecessor-version":[{"id":4541,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/936\/revisions\/4541"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}