Heim  >  Artikel  >  Backend-Entwicklung  >  .net-Streams – Kopieren von Dateien mithilfe von Streams

.net-Streams – Kopieren von Dateien mithilfe von Streams

黄舟
黄舟Original
2017-02-24 10:44:081455Durchsuche

Ähnlich wie verschiedene Dateistreams und Netzwerkstreams in Java gibt es auch in .net verschiedene Arten von Streams. Der Hauptzweck von Streams besteht darin, mit Dateien oder Datenquellen außerhalb der Anwendung zu interagieren. Die Basisklasse ist Stream, definiert unter dem Namensraum System.IO; Schreiben Sie in die Testdatei etwas:

Dann gibt es unseren Code:

Beachten Sie, dass Sie bei Nichtverwendung die Entsorgung nicht vergessen 🎜>

Zweitens Schleife und Stapelkopie
#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

Um den folgenden Code zu testen, empfiehlt es sich, eine größere Datei zu finden.

PS: Es wird empfohlen, die Methode zu verwenden. Sie ist recht wissenschaftlich und ähnelt dem Prinzip des Hochladens großer Dateien.



Das Obige ist der .net-Stream – mit Streams Dateien verarbeiten. Kopierter Inhalt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

#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








Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn