Flux .net – copie de fichiers à l'aide de flux

黄舟
Libérer: 2017-02-24 10:44:08
original
1517 Les gens l'ont consulté

Semblable à divers flux de fichiers et flux réseau en Java, il existe également différents types de flux en .net. L'objectif principal des flux est d'interagir avec des fichiers ou des sources de données en dehors de l'application. La classe de base est Stream, définie sous l'espace de noms System.IO ; Dans le fichier de test, écrivez quelque chose :

Ensuite, il y a notre code :

Notez que si vous n'utilisez pas using, n'oubliez pas de jeter 🎜>

Deuxièmement, copie en boucle et par lots
#region 使用流进行一次性复制

            //创建一个文件流对象(参数一:指定了文件的位置;参数二:枚举值,指定操作系统打开文件的方式;参数三:表明了打开文件的意图;注意第二个参数与第三个参数要注意搭配使用)
              Stream source = new FileStream(@"C:/Users/v-liuhch/Desktop/StreamTest.txt", FileMode.Open, FileAccess.Read);
                byte[] buffer = new byte[source.Length];
            //将文件数据写入到字节数组中(参数一:要写入的字节数组; 参数二:用于设定文件从哪个位置开始读取;参数三:读取的字节数)
                int byteRead = source.Read(buffer, 0, (int)source.Length);//返回值为读取到的字节数
                //foreach (var b in buffer)
                //{
                //   // Console.WriteLine(Convert.ToString(b, 2));//二进制
                //    //Console.WriteLine(Convert.ToString(b, 10));//十进制
                //    Console.WriteLine(Convert.ToString(b, 16).ToUpper());//十六进制
                //}
                //Console.ReadKey();


                //将文件写入StreamTarget.txt
                using (Stream target = new FileStream(@"C:/Users/v-liuhch/Desktop/StreamTarget.txt", FileMode.Create, FileAccess.Write))
                {
                    target.Write(buffer, 0, buffer.Length);
                }
                
                source.Dispose();


            #endregion
Copier après la connexion

Afin de tester le code suivant, il est recommandé de rechercher un fichier plus volumineux.

PS : Il est recommandé d'utiliser ; La méthode est assez scientifique, similaire au principe du téléchargement de gros fichiers.



Ce qui précède est le flux .net - utilisant des flux pour traiter les fichiers Contenu copié, veuillez faire attention au site Web PHP chinois (www.php.cn) pour plus de contenu connexe !

#region 循环分批复制

                /*问题出现背景:
                     传递一个更大的文件;
                 *   事先无法得知文件的大小,例如读取网络文件;
                 *   上述情况不能创建一个尺寸正好合适的byte[]数组,此时只能分批读取和写入,每次只读取部分字节,直到文件尾部; 
                 */

            int BufferSize = 10240;//10KB
            using ( Stream source = new FileStream(@"C:/Users/v-liuhch/Desktop/sherlock.wmv", FileMode.Open, FileAccess.Read))
            {
                using (Stream target = new FileStream(@"C:/Users/v-liuhch/Desktop/sherlockCopy.wmv", FileMode.Create, FileAccess.Write))
                {
                    byte[] buffer = new byte[BufferSize];
                    int bytesRead;
                    do
                    {
                        bytesRead = source.Read(buffer, 0, BufferSize);
                        target.Write(buffer, 0, bytesRead);
                    } while (bytesRead > 0);
                }
            }
            #endregion
Copier après la connexion








Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal