Pengurusan bebas StreamWriter: keluarkan tanpa menutup strim asas
Apabila objek StreamWriter dikeluarkan, ia juga mengeluarkan strim asas yang berkaitan. Tingkah laku ini boleh menyebabkan masalah apabila aliran asas perlu dibuka. Nasib baik, terdapat beberapa cara untuk menyelesaikan masalah ini.
Alternatif:
Contoh kod:
Kod berikut menunjukkan penggunaan lebihan StreamWriter dalam .NET Framework 4.5 dan lebih tinggi:
<code class="language-csharp">using (var writer = new StreamWriter(baseStream, Encoding.UTF8, leaveOpen: true)) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
Untuk versi lama .NET Framework:
Dalam versi lama .NET Framework, anda boleh menggabungkan pembalut strim menggunakan:
<code class="language-csharp">public class StreamWrapper : Stream { private Stream baseStream; public StreamWrapper(Stream baseStream) { this.baseStream = baseStream; } // 重写Close和Dispose方法以忽略基础流调用 // ... (此处需要补充Close和Dispose方法的具体实现,使其不关闭baseStream) } // 使用方法 using (var writer = new StreamWriter(new StreamWrapper(baseStream))) { // 对StreamWriter进行写入操作 } // 基础流保持打开状态</code>
Dengan menggunakan teknik ini, anda boleh mengurus objek StreamWriter tanpa menjejaskan keadaan aliran asas. Sila ambil perhatian bahawa untuk versi lama contoh pembalut strim .NET Framework, anda perlu melaksanakan sendiri kaedah Close
dan Dispose
untuk memastikan ia tidak menutup baseStream
.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Melupuskan StreamWriter Tanpa Menutup BaseStreamnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!