{"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\/fr\/blog\/java\/copie-de-fichier","title":{"rendered":"Copie de fichier Java (modifier la taille du tampon)"},"content":{"rendered":"<h2 class=\"common_title\"><a name=\"0\">Copie de fichier Java (modifier la taille du tampon)<\/a><\/h2>\n<p>\nEn Java <strong>java.io.InputStream<\/strong>,,<strong>java.io.OutputStream<\/strong> \u00e0<br \/>\nPr\u00e9sentation d&#039;un exemple de programme qui effectue un traitement de copie \u00e0 l&#039;aide de flux d&#039;entr\u00e9e\/sortie.<br \/>\nDans le traitement de copie utilisant des flux, m\u00eame les fichiers volumineux peuvent \u00eatre copi\u00e9s relativement rapidement en augmentant la taille du tampon de lecture.<br \/>Dans l&#039;exemple de programme, la taille du tampon de lecture des donn\u00e9es peut \u00eatre sp\u00e9cifi\u00e9e avec un argument.\n<\/p>\n<p>\nLa zone tampon de lecture sp\u00e9cifi\u00e9e est s\u00e9curis\u00e9e dans le tas JavaVM, donc la rendre trop grande entra\u00eenera une mauvaise efficacit\u00e9. Par cons\u00e9quent, nous v\u00e9rifierons \u00e9galement la taille efficace du tampon de lecture des donn\u00e9es lors de la copie de fichiers.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">exemple de programme<\/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 * \u00c9crit les donn\u00e9es du flux d&#039;entr\u00e9e vers le flux de sortie.<br \/>\n *Le flux d&#039;entr\u00e9e\/sortie sera ferm\u00e9 une fois le processus de copie termin\u00e9.<br \/>\n * @param dans le flux d&#039;entr\u00e9e<br \/>\n * @param os flux de sortie<br \/>\n * @param bufferSize Taille du tampon de lecture des donn\u00e9es (Ko).<br \/>\n * @throws IOException Si une exception de traitement d&#039;entr\u00e9e\/sortie se produit<br \/>\n *\/<br \/>\npublic static void copyStream (InputStream dans, OutputStream os,<br \/>\n    int bufferSize) lance IOException {<br \/>\n    int len = -1;<br \/>\n    octet[] b = nouvel octet[bufferSize * 1024];<br \/>\n    essayer {<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    } enfin {<br \/>\n        si (dans != null) {<br \/>\n            essayer {<br \/>\n                joindre();<br \/>\n            } catch (IOException e) {<br \/>\n                e.printStackTrace();<br \/>\n            }<br \/>\n        }<br \/>\n        si (os != nul) {<br \/>\n            essayer {<br \/>\n                os.close();<br \/>\n            } catch (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\">ex\u00e9cution<\/a><\/h2>\n<p>\nAfin de copier l&#039;exemple de fichier de programme, nous avons pr\u00e9par\u00e9 un fichier de 100 Mo &quot;100M.txt&quot; directement sous le lecteur C. Dans l&#039;exemple de programme, <i>C:\\100M.txt<\/i> , lisez les donn\u00e9es en unit\u00e9s de taille de tampon 1 000 Ko. <i>C:\\a.txt<\/i>  Copier.<\/p>\n<p>L\u2019exemple a \u00e9t\u00e9 ex\u00e9cut\u00e9 dans l\u2019environnement suivant.<br \/>\nSyst\u00e8me d&#039;exploitation\u00a0: Windows\u00a0XP<br \/>\nProcesseur : Athlon 1,46 GHz<br \/>\nM\u00e9moire : 1 Go<br \/>\nJRE\u00a0:\u00a01.6.4\n<\/p>\n<p>\u25c6Exemple d&#039;ex\u00e9cution<\/p>\n<pre class=\"sample_src\">\/** * Exemple d&#039;ex\u00e9cution * @param args *\/ public static void main(String[] args) { try { copyStream(&quot;C:\\\\100M.txt&quot;, &quot;C:\\\\a.txt&quot;,1000); } catch (IOException e) { e.printStackTrace(); } }\r\n<\/pre>\n<p>\u25c6R\u00e9sultats d&#039;ex\u00e9cution<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\">Modification de la taille du tampon<\/a><\/h2>\n<p>\nPour v\u00e9rifier la taille efficace du tampon de lecture des donn\u00e9es lors de la copie de fichiers, utilisez le troisi\u00e8me argument de copyStream comme<br \/>\nLes r\u00e9sultats d&#039;un traitement de copie similaire dans des unit\u00e9s de 1 Ko, 100 Ko, 1 000 Ko et 10 000 Ko sont r\u00e9sum\u00e9s ci-dessous.<br \/>\n<img src=\"https:\/\/chat-messenger.com\/images\/file_copy_stream_reslt.jpg\" alt=\"\" border=\"0\"><br clear=\"all\"><br \/>\n<br \/>\nBien que cela ne puisse pas \u00eatre conclu \u00e0 partir des seuls r\u00e9sultats ci-dessus, si vous sp\u00e9cifiez la taille du tampon de lecture des donn\u00e9es en unit\u00e9s de 1 000 Ko,<br \/>\nLes r\u00e9sultats ont montr\u00e9 qu&#039;il \u00e9tait efficace en termes d&#039;utilisation du tas et de temps de traitement lors du traitement de la copie.<br \/>\nDes r\u00e9sultats similaires ont \u00e9t\u00e9 obtenus m\u00eame en augmentant la taille du fichier (environ 1 Go).<\/p>\n<p>D&#039;un autre c\u00f4t\u00e9, lors de la copie d&#039;un petit fichier (environ 1 Mo ou moins), augmenter la taille du tampon sera un gaspillage, je pense donc qu&#039;il est pr\u00e9f\u00e9rable de sp\u00e9cifier environ 100 Ko.\n<\/p>\n\n<h2 class=\"common_title\"><a name=\"5\">Utilisez FileChannel pour des vitesses plus rapides<\/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 \/>\nLe traitement de la copie est important pour comprendre les flux d&#039;entr\u00e9e\/sortie, mais<br \/>\nNouvelles E\/S introduites dans J2SE1.4 <strong>java.nio.channels.FileChannel#transferTo<\/strong><br \/>\nEn utilisant cette m\u00e9thode, vous pouvez copier des fichiers encore plus efficacement.<br \/>\nEnsuite, je vais vous montrer comment copier facilement et rapidement des fichiers \u00e0 l&#039;aide de FileChannel.<br \/>\n\u21d2 <\/a><a href=\"https:\/\/chat-messenger.com\/fr\/blog\/java\/transfert-de-canal-de-fichiers-vers\/\"><strong>Copie de fichier Java (facile et rapide)<\/strong><\/a><br \/>\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Copie de fichier Java (modification de la taille du tampon) java.io.InputStream en 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\/fr\/wp-json\/wp\/v2\/posts\/936"}],"collection":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/comments?post=936"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/936\/revisions"}],"predecessor-version":[{"id":4541,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/posts\/936\/revisions\/4541"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/media?parent=936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/categories?post=936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/fr\/wp-json\/wp\/v2\/tags?post=936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}