Ä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