Skip to content

Commit dd958bc

Browse files
committed
refactor: 精简代码
1 parent 0b8c491 commit dd958bc

1 file changed

Lines changed: 23 additions & 31 deletions

File tree

tools/BootstrapBlazor.CssBundler/Bundler.cs

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// Website: https://www.blazor.zone or https://argozhang.github.io/
44

55
using System.Buffers;
6+
using System.Text;
67

78
namespace BootstrapBlazor.CssBundler;
89

@@ -58,42 +59,33 @@ static void DoBundler(string bundlerFile, BundlerOptions option)
5859
return;
5960
}
6061

61-
var buffer = ArrayPool<byte>.Shared.Rent(64 * 1024);
62-
try
62+
using var writer = File.OpenWrite(Path.Combine(rootFolder, option.OutputFileName));
63+
foreach (var file in option.InputFiles)
6364
{
64-
using var writer = File.OpenWrite(Path.Combine(rootFolder, option.OutputFileName));
65-
foreach (var file in option.InputFiles)
65+
var inputFile = Path.Combine(rootFolder, file);
66+
if (!File.Exists(inputFile))
6667
{
67-
var inputFile = Path.Combine(rootFolder, file);
68-
if (!File.Exists(inputFile))
69-
{
70-
continue;
71-
}
72-
73-
using var reader = File.OpenRead(inputFile);
74-
var read = reader.Read(buffer, 0, buffer.Length);
75-
if (read >= 3 && buffer[0] == 0xEF && buffer[1] == 0xBB && buffer[2] == 0xBF)
76-
{
77-
writer.Write(buffer, 3, read - 3);
78-
}
79-
else
80-
{
81-
writer.Write(buffer, 0, read);
82-
}
83-
84-
while (reader.Position < reader.Length)
85-
{
86-
read = reader.Read(buffer, 0, buffer.Length);
87-
writer.Write(buffer, 0, read);
88-
}
68+
continue;
8969
}
90-
writer.Close();
91-
}
92-
finally
93-
{
94-
ArrayPool<byte>.Shared.Return(buffer);
70+
using var reader = File.OpenRead(inputFile);
71+
if (IsUtf8Bom(reader))
72+
{
73+
reader.Seek(0, SeekOrigin.Begin);
74+
}
75+
reader.CopyTo(writer);
9576
}
77+
writer.Close();
9678

9779
Console.WriteLine($"Bundler Completed .... {option.OutputFileName}");
9880
}
81+
82+
private static bool IsUtf8Bom(Stream stream)
83+
{
84+
Span<byte> buffer = stackalloc byte[3];
85+
if (stream.Read(buffer) != buffer.Length)
86+
{
87+
return false;
88+
}
89+
return buffer.SequenceEqual(Encoding.UTF8.GetPreamble());
90+
}
9991
}

0 commit comments

Comments
 (0)