C# 将File.ReadAllBytes的结果转换为文件对象,而不实际写入

C# 将File.ReadAllBytes的结果转换为文件对象,而不实际写入,c#,file,bytestream,C#,File,Bytestream,一个模块使用 File.ReadAllBytes("path") 并将结果存储在数据库表中 稍后我从表中获取结果并正常使用 File.WriteAllBytes("outputPath", binary.Data) 将文件写回 现在我必须更改文件的内容。当然,我可以将文件写入临时文件夹,将其作为文件对象读回,更改它,然后将其写入目标文件夹。 但是有没有更聪明的方法呢?直接从二进制数据创建文件对象?找到了解决方案。它是编码类: var binary = GetBinaryFil

一个模块使用

File.ReadAllBytes("path")
并将结果存储在数据库表中

稍后我从表中获取结果并正常使用

File.WriteAllBytes("outputPath", binary.Data)
将文件写回

现在我必须更改文件的内容。当然,我可以将文件写入临时文件夹,将其作为文件对象读回,更改它,然后将其写入目标文件夹。
但是有没有更聪明的方法呢?直接从二进制数据创建文件对象?

找到了解决方案。它是编码类:

        var binary = GetBinaryFileFromDatabase();

        var inputLines = Encoding.Default.GetString(binary).Split('\n');
        var outputLines = new List<string>();

        foreach (var line in inputLines)
        {
            var columns = line.Split(';');
            if (columns.Length > 28 && columns[28] != null && columns[28].Length > 0)
            {
                columns[28] = columns[28].Replace(Path.GetFileName(columns[28]), "SomeValue");
            }
            outputLines.Add(string.Join(";", columns));
        }
        File.WriteAllLines(outputPath, outputLines);
var binary=GetBinaryFileFromDatabase();
var inputLines=Encoding.Default.GetString(二进制).Split('\n');
var outputLines=新列表();
foreach(输入行中的var行)
{
var columns=line.Split(“;”);
if(columns.Length>28&&columns[28]!=null&&columns[28]。Length>0)
{
列[28]=列[28]。替换(Path.GetFileName(列[28]),“SomeValue”);
}
Add(string.Join(“;”,columns));
}
writeAllines(outputPath,outputLines);

谢谢大家

使用MemoryStream。内存流会返回一个字符串,但我有一个包含许多行的CSV文件,需要访问file.ReadAllLines()。除此之外,您只需创建一个类似于CSV的数据结构,并将填充的数据结构提供给编写器函数。您所说的“作为文件对象”是什么意思?我想使用File.ReadAllLines方法。或者任何其他允许我将csv的二进制数据转换为单行列表的方法。