将列重新排列到 txt 文件中 c#

Rearrange columns into a txt file c#

我有多个列,我想重新排序到一个 txt 文件中,到目前为止,第一列是正确插入的,但我希望接下来的列在旁边,它们一直写在最后。 这是我目前所拥有的

StreamReader sr = new StreamReader(file.FullName, System.Text.Encoding.GetEncoding("iso-8859-1"));
List <Campos> listaEsquemaEntrada = LeerXML(RutaArchivoConfig);
var lista = File.ReadAllLines(file.FullName);           
string Separador = ObtenerSeparador(RutaArchivoConfig);
int filaInicial = ObtenerLineaInicial(RutaArchivoConfig);
List<string> ListaFinal = new List<string>();
bool PrimeraIteracion = true;
foreach (Campos campos in listaEsquemaEntrada)
{
    if (campos.columna != 99)
    {
        using (System.IO.StreamWriter ArchivoSalida =
                new System.IO.StreamWriter(RutaOrigen + "\" + "nuevoArchivo.txt",true))
        {
            if (PrimeraIteracion)
            {
                foreach (string line in lista)
                {
                    ArchivoSalida.WriteLine(line.Split(Char.Parse(Separador))[campos.columna - 1]);
                }
                PrimeraIteracion=false;
            }
            else
            {
                foreach (string line in lista)
                {
                    ArchivoSalida.WriteLine(Separador + line.Split(Char.Parse(Separador))[campos.columna - 1]);
                }
            }
           
        }
    }
    else
    {
        continue;
    }
}

但我一直收到这个

C�digo de la Cuenta Contable 
111100101   
111150012   
111150016   
111150028   
111150039   
116150101   
116150101   
|Tipo de Comprobante 
|APE
|APE

我想要这样的东西:

C�digo de la Cuenta Contable |Tipo de Comprobante
111100101   |APE
111150012   |APE
111150016   |APE
111150028   |APE
111150039   |APE
116150101   |APE
116150101   |APE

是的,文本文件就是这样工作的。如果您已将单列写入文本文件:

var first = new [] { "header", "line1", "line2", "line3" };
File.WriteAllLines(@"c:\temp\file.txt", first);

而你想再写一个专栏

var second = new [] { "header2", "newline1", "newline2", "newline3" };

最简单的方法可能是读取整个文件,将每个新位添加到每一行的末尾,然后再次写入整个文件:

var file = File.ReadAllLines(@"c:\temp\file.txt");
for(int i = 0; i < file.Length; i++)
  file[i] += '\t' + second[i]; //add the second column after the first, with a tab

File.WriteAllLines(@"c:\temp\file.txt", file);

当然,如果您在第一次写入文件之前同时拥有 firstsecond(如 Lists、数组、IEnumerable<string> 等) ,然后进行合并;无需 re-read 文件。如果您希望有一个修改之前写入的现有文件的过程(例如,昨天,当您没有第二列数据时),我只是把它放在里面

如果您的文件很大,您可以更多地参与逐步读取一个文件(参见 File.ReadLines)和逐步写入另一个文件(StreamWriter 等),所以你并没有将整个东西缓冲到内存中..但是如果你正在谈论一个小于 10 兆字节的文件,请采用简单的方法并全部读取,修改,全部写入