将列重新排列到 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);
当然,如果您在第一次写入文件之前同时拥有 first
和 second
(如 List
s、数组、IEnumerable<string>
等) ,然后进行合并;无需 re-read 文件。如果您希望有一个修改之前写入的现有文件的过程(例如,昨天,当您没有第二列数据时),我只是把它放在里面
如果您的文件很大,您可以更多地参与逐步读取一个文件(参见 File.ReadLines
)和逐步写入另一个文件(StreamWriter
等),所以你并没有将整个东西缓冲到内存中..但是如果你正在谈论一个小于 10 兆字节的文件,请采用简单的方法并全部读取,修改,全部写入
我有多个列,我想重新排序到一个 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);
当然,如果您在第一次写入文件之前同时拥有 first
和 second
(如 List
s、数组、IEnumerable<string>
等) ,然后进行合并;无需 re-read 文件。如果您希望有一个修改之前写入的现有文件的过程(例如,昨天,当您没有第二列数据时),我只是把它放在里面
如果您的文件很大,您可以更多地参与逐步读取一个文件(参见 File.ReadLines
)和逐步写入另一个文件(StreamWriter
等),所以你并没有将整个东西缓冲到内存中..但是如果你正在谈论一个小于 10 兆字节的文件,请采用简单的方法并全部读取,修改,全部写入