核心代碼
string[] lines = File.ReadAllLines("big.txt"); // 一次性讀入記憶體,適合 < 100MB
int batchSize = 1000;
for (int i = 0; i < lines.Length; i += batchSize) {
var batch = lines.Skip(i).Take(batchSize);
File.WriteAllLines($"part_{i/batchSize + 1}.txt", batch);
}
大檔案優化(流式處理)
int count = 0, fileNo = 1;
using (var reader = File.OpenText("big.txt"))
using (var writer = File.CreateText($"part_{fileNo}.txt")) {
string line;
while ((line = reader.ReadLine()) != null) {
writer.WriteLine(line);
if (++count == batchSize) {
count = 0;
writer.Dispose();
writer = File.CreateText($"part_{++fileNo}.txt");
}
}
}
說明
- LINQ 寫法簡潔,適合中小檔案。
- 流式寫法記憶體佔用恆定,適合 GB 級大檔。