c# - 使用 C# 如何将文本文件拆分为多个文件
问题描述
如何将包含 ASCII 码 SOH 和 ETX 的文本文件拆分为多个文件?
例如,我命名为 001234.txt 的文本文件包含以下内容:
SOH{ABCDXZY}ETX
SOH{ABCDXZY}ETX
SOH{ABCDXZY}ETX
对于以 SOH 开头并以 ETX 结尾的每个 ASCII 代码,我想将单个文本文件拆分为多个文本文件。
单个文本文件名应拆分为 101234.txt 、 111234.txt..etc ,每个都包含以 SOH 开头并以 ETX 结尾的单个内容。
我很感激任何帮助。
使用 System.IO;使用 System.Linq;
namespace ASCII_Split
{
class Program
{
static void Main(string[] args)
{
var txt = "";
const char soh = (char)1;
const char eox = (char)3;
var count = 1;
var pathToFile = @"C:\Temp\00599060.txt";
using (var sr = new StreamReader(pathToFile))
txt = sr.ReadToEnd();
while (txt.Contains(soh))
{
var outfil = Path.Combine(Path.GetDirectoryName(pathToFile), count.ToString("000"), "_fix.txt");
var eInd = txt.IndexOf(eox);
using (var sw = new StreamWriter(outfil, false))
{
sw.Write(txt.Substring(1, eInd - 1));
}
txt = txt.Substring(eInd + 1);
count++;
}
}
}
}
解决方案
这应该或多或少起到作用:
//Read all text from file into a string
var fileContent = File.ReadAllText("001234.txt");
//split text into array according to a Regex pattern
var pattern = @"SOH*ETX";
var splitContent = Regex.Split(fileContent, pattern);
//counter for file names
var counter = 10;
foreach(var content in splitContent)
{
//create file and use stream to write to it
using (var stream = File.Create($"{counter++}1234.txt"))
{
var contentAsBytes = new UTF8Encoding(true).GetBytes(content);
stream.Write(contentAsBytes, 0, contentAsBytes.Length);
}
}
推荐阅读
- c# - 如何在使用 Windows.Web.Http 的 UWP 应用中使用为 System.Net.Http 添加的 IdentityModel 扩展方法 (TokenRefresh)
- flutter - 电话会议就像放大颤动
- python - Python exit() 命令触发无限循环(已解决)
- python - 如何在 Gekko 中使用 apm_get?
- python - numpy(setup.py)的构建轮......错误
- angular - 如何在 observable 中等待异步函数?
- go - 调用 Google Apps 脚本
- javascript - 是否可以在设备级别而不是浏览器级别使用 javascript 生成指纹?
- data-structures - 通过删除/更新查找最小值的数据结构建议
- c - 在 C 的 sprintf 中添加 \