{"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\/id\/blog\/java\/salinan-berkas","title":{"rendered":"Salin file Java (ubah ukuran buffer)"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\">Salin file Java (ubah ukuran buffer)<\/a><\/h2>\n<p>\nDi Jawa <strong>java.io.InputStream<\/strong>,,<strong>java.io.OutputStream<\/strong> pada<br \/>\nMemperkenalkan contoh program yang melakukan pemrosesan salinan menggunakan aliran input\/output.<br \/>\nDalam pemrosesan penyalinan menggunakan aliran, bahkan file besar pun dapat disalin dengan relatif cepat dengan meningkatkan ukuran buffer baca.<br \/>Dalam program contoh, ukuran buffer pembacaan data dapat ditentukan dengan argumen.\n<\/p>\n<p>\nArea buffer baca yang ditentukan diamankan dalam tumpukan JavaVM, sehingga membuatnya terlalu besar akan mengakibatkan efisiensi yang buruk. Oleh karena itu, kami juga memeriksa ukuran buffer pembacaan data yang efisien saat menyalin file.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">contoh program<\/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 * Menulis data dari aliran masukan ke aliran keluaran.<br \/>\n *Aliran input\/output akan ditutup setelah proses penyalinan selesai.<br \/>\n * @param di aliran masukan<br \/>\n * Aliran keluaran @param os<br \/>\n * @param bufferSize Data membaca ukuran buffer (KB).<br \/>\n * @throws IOException Jika terjadi pengecualian pemrosesan input\/output<br \/>\n *\/<br \/>\npublic static void copyStream(InputStream masuk, OutputStream os,<br \/>\n    int bufferSize) melempar IOException {<br \/>\n    int len = -1;<br \/>\n    byte[] b = byte baru[ukuran buffer * 1024];<br \/>\n    mencoba {<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    } Akhirnya {<br \/>\n        jika (dalam != nol) {<br \/>\n            mencoba {<br \/>\n                melampirkan();<br \/>\n            } tangkapan (IOException e) {<br \/>\n                e.printStackTrace();<br \/>\n            }<br \/>\n        }<br \/>\n        jika (os != nol) {<br \/>\n            mencoba {<br \/>\n                os.close();<br \/>\n            } tangkapan (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\">eksekusi<\/a><\/h2>\n<p>\nUntuk menyalin file contoh program, kami telah menyiapkan file 100MB &quot;100M.txt&quot; langsung di bawah drive C. Dalam contoh program, <i>C:\\100M.txt<\/i> , membaca data dalam satuan ukuran buffer 1000KB. <i>C:\\a.txt<\/i>  Salin ke.<\/p>\n<p>Sampel dieksekusi di lingkungan berikut.<br \/>\nOS: WindowsXP<br \/>\nProsesor: Athlon 1,46GHz<br \/>\nMemori: 1GB<br \/>\nJRE: 1.6.4\n<\/p>\n<p>\u25c6Contoh eksekusi<\/p>\n<pre class=\"sample_src\">\/** * Contoh eksekusi * @param args *\/ public static void main(String[] args) { coba { copyStream(&quot;C:\\\\100M.txt&quot;, &quot;C:\\\\a.txt&quot;,1000); } tangkapan (IOException e) { e.printStackTrace(); } }\r\n<\/pre>\n<p>\u25c6Hasil eksekusi<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\">Mengubah ukuran buffer<\/a><\/h2>\n<p>\nUntuk memeriksa ukuran buffer pembacaan data yang efisien saat menyalin file, setel argumen ketiga copyStream ke<br \/>\nHasil pemrosesan salinan serupa dalam unit 1KB, 100KB, 1000KB, dan 10000KB dirangkum di bawah ini.<br \/>\n<img src=\"https:\/\/chat-messenger.com\/images\/file_copy_stream_reslt.jpg\" alt=\"\" border=\"0\"><br clear=\"all\"><br \/>\n<br \/>\nMeskipun tidak dapat disimpulkan dari hasil di atas saja, namun jika Anda menentukan ukuran buffer baca data dalam satuan 1000KB,<br \/>\nHasilnya menunjukkan efisien dari segi penggunaan heap dan waktu proses pada saat proses copy.<br \/>\nHasil serupa diperoleh bahkan ketika ukuran file diperbesar (kira-kira 1GB).<\/p>\n<p>Di sisi lain, ketika menyalin file kecil (sekitar 1MB atau kurang), menambah ukuran buffer akan sia-sia, jadi menurut saya lebih baik menentukan sekitar 100KB.\n<\/p>\n\n<h2 class=\"common_title\"><a name=\"5\">Gunakan FileChannel untuk kecepatan lebih cepat<\/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 \/>\nPemrosesan penyalinan penting dalam memahami aliran input\/output, namun<br \/>\nI\/O baru diperkenalkan di J2SE1.4 <strong>java.nio.channels.FileChannel#transferTo<\/strong><br \/>\nDengan menggunakan metode ini, Anda dapat menyalin file dengan lebih efisien.<br \/>\nSelanjutnya saya akan menunjukkan cara menyalin file dengan mudah dan cepat menggunakan FileChannel.<br \/>\n\u21d2 <\/a><a href=\"https:\/\/chat-messenger.com\/id\/blog\/java\/transfer-saluran-file-ke\/\"><strong>Salin file Java (mudah dan cepat)<\/strong><\/a><br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Salin file Java (ubah ukuran buffer) java.io.InputStream di 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\/id\/wp-json\/wp\/v2\/posts\/936"}],"collection":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/comments?post=936"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"predecessor-version":[{"id":4541,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/posts\/936\/revisions\/4541"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/id\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}