C#从内存中读取数据
Reading data from memory in C#
我正在做一些需要从文件中读取数据的事情。正如您在下面看到的,我正在使用 for 循环遍历文件列表,搜索特定的十六进制字符,并将该字符替换为空 space。
后来,我用行覆盖了原始文件,因为行现在没有十六进制字符,但我不允许覆盖原始字符。我也不允许在源目录(原始文件所在的目录)中将行保存为新文件。
var fileList = Directory.GetFiles(SourceDirectory, "*.*", SearchOption.TopDirectoryOnly)
foreach (var file in fileList)
{
var lines = File.ReadAllLines(file);
for(var i = 0; i < lines.Length; i++)
{
if (lines[i].Contains("\u001A"))
{
lines[i] = lines[i].Replace("\u001A", " ");
}
}
System.IO.File.WriteAllLines(file, lines);
var grkFile = new GenericRkFile<FileTypes.FinancialAdvisor, FileTypes.Plan, FileTypes.PlanFund, FileTypes.Header, FileTypes.Trailer>();
grkFile.LoadData(file);
}
由于 grkFile.LoadData()
是一个文件,我不能将行作为值传递。
我的问题是,我可以以某种方式将行保存为内存中的文件或类似的东西,然后用它传递给 grkFile.LoadData() 吗?
因为您依赖于您无法更改的 API
选项可以是在临时位置创建临时文件,用正确的数据填充它,加载它然后删除它。 .NET
提供了一些帮助方法,可以让您的生活更加轻松。这些位于 System.IO namespace
内。这对于在临时用户文件夹中创建临时文件非常有用:
Path.GetTempFileName()
更多信息您可以查看:Sytem.IO.Path
我正在做一些需要从文件中读取数据的事情。正如您在下面看到的,我正在使用 for 循环遍历文件列表,搜索特定的十六进制字符,并将该字符替换为空 space。 后来,我用行覆盖了原始文件,因为行现在没有十六进制字符,但我不允许覆盖原始字符。我也不允许在源目录(原始文件所在的目录)中将行保存为新文件。
var fileList = Directory.GetFiles(SourceDirectory, "*.*", SearchOption.TopDirectoryOnly)
foreach (var file in fileList)
{
var lines = File.ReadAllLines(file);
for(var i = 0; i < lines.Length; i++)
{
if (lines[i].Contains("\u001A"))
{
lines[i] = lines[i].Replace("\u001A", " ");
}
}
System.IO.File.WriteAllLines(file, lines);
var grkFile = new GenericRkFile<FileTypes.FinancialAdvisor, FileTypes.Plan, FileTypes.PlanFund, FileTypes.Header, FileTypes.Trailer>();
grkFile.LoadData(file);
}
由于 grkFile.LoadData()
是一个文件,我不能将行作为值传递。
我的问题是,我可以以某种方式将行保存为内存中的文件或类似的东西,然后用它传递给 grkFile.LoadData() 吗?
因为您依赖于您无法更改的 API
选项可以是在临时位置创建临时文件,用正确的数据填充它,加载它然后删除它。 .NET
提供了一些帮助方法,可以让您的生活更加轻松。这些位于 System.IO namespace
内。这对于在临时用户文件夹中创建临时文件非常有用:
Path.GetTempFileName()
更多信息您可以查看:Sytem.IO.Path