From 5daa5b987a9790ef2d3d021330591d61ce2d799e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Tue, 21 Dec 2021 09:24:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=97=AD=E8=AF=BB=E5=8F=96=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dns/HostsConflictSolver.cs | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/FastGithub.PacketIntercept/Dns/HostsConflictSolver.cs b/FastGithub.PacketIntercept/Dns/HostsConflictSolver.cs index 59d40ab..2427de8 100644 --- a/FastGithub.PacketIntercept/Dns/HostsConflictSolver.cs +++ b/FastGithub.PacketIntercept/Dns/HostsConflictSolver.cs @@ -44,23 +44,26 @@ namespace FastGithub.PacketIntercept.Dns return; } + Encoding hostsEncoding; var hasConflicting = false; var hostsBuilder = new StringBuilder(); - using var fileStream = new FileStream(hostsPath, FileMode.Open, FileAccess.Read); - using var streamReader = new StreamReader(fileStream); - - while (streamReader.EndOfStream == false) + using (var fileStream = new FileStream(hostsPath, FileMode.Open, FileAccess.Read)) { - var line = await streamReader.ReadLineAsync(); - if (this.IsConflictingLine(line)) + using var streamReader = new StreamReader(fileStream); + while (streamReader.EndOfStream == false) { - hasConflicting = true; - hostsBuilder.AppendLine($"# {line}"); - } - else - { - hostsBuilder.AppendLine(line); + var line = await streamReader.ReadLineAsync(); + if (this.IsConflictingLine(line)) + { + hasConflicting = true; + hostsBuilder.AppendLine($"# {line}"); + } + else + { + hostsBuilder.AppendLine(line); + } } + hostsEncoding = streamReader.CurrentEncoding; } @@ -68,8 +71,7 @@ namespace FastGithub.PacketIntercept.Dns { try { - File.Move(hostsPath, Path.ChangeExtension(hostsPath, ".bak"), overwrite: true); - await File.WriteAllTextAsync(hostsPath, hostsBuilder.ToString(), streamReader.CurrentEncoding, cancellationToken); + await File.WriteAllTextAsync(hostsPath, hostsBuilder.ToString(), hostsEncoding, cancellationToken); } catch (Exception ex) {