将列重新排列为txt文件c#
我有多个列,我想重新排序到一个txt文件中,到目前为止,第一列插入的权利,但我希望下一列是在一边,他们继续写在最后。 这就是我目前所拥有的将列重新排列为txt文件c#,c#,streamwriter,C#,Streamwriter,我有多个列,我想重新排序到一个txt文件中,到目前为止,第一列插入的权利,但我希望下一列是在一边,他们继续写在最后。 这就是我目前所拥有的 StreamReader sr = new StreamReader(file.FullName, System.Text.Encoding.GetEncoding("iso-8859-1")); List <Campos> listaEsquemaEntrada = LeerXML(RutaArchivoConfig); v
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 |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);
var file=file.ReadAllLines(@“c:\temp\file.txt”);
for(int i=0;i
当然,如果在第一次写入文件之前,您同时拥有第一个
和第二个
(如列表
s、数组、IEnumerable
等),那么只需进行合并即可;无需重新读取该文件。如果您希望有一个修改以前编写的现有文件的流程(例如昨天,当您没有第二列数据时),那么我只需要将其放入
如果您的文件是海量的,您可以更多地参与一个文件的渐进式读取(请参见
file.ReadLines
),以及另一个文件的渐进式写入(StreamWriter
等),这样您就不会将整个文件缓冲到内存中。。但是,如果你谈论的是一个小于(比如)10兆字节的文件,那么就用简单的方法,只需全部读取、修改、全部写入即可WriteLine在输出中添加一个换行符。你需要使用Write,当一行结束时,你可以调用WriteLine empty来开始新行。这是一个迭代,第一列被插入,第二列在第一列全部出现之后,我一次不插入一个单元格,我已经在第二个foreach中尝试了Write方法,但是它仍然在第一个foreach的底部。如果我想要的话,完全写第一列,然后写第二个加上一个分隔符,在这种情况下,我不能逐行写,因为我从一个xml中获取我想要获取的列的位置,并将其传输到txt,基本上我有一个包含多个列的txt,我只想选择几个列并将它们写入一个新的txt文件,也许还有另一种方法我看不到问题是列的数量及其变量,有时我需要在不同的位置得到3列,然后我可能需要在另一个位置得到2列,我不能声明数组,因为我不知道列的数量或位置,然后你需要读取文件,在选项卡上拆分,在写出来时重新排列列。我只能回答问题中提出的情况。我只是以声明数组为例;您有列表-它们可以传递到WriteAlline。你错过了我要说的要点:如果你想让一个文本文件变成一个不同的形状,你可以全部阅读,通过混合新旧数据创建一个新的文件,然后再写一次。如果你想重新创建一个数据库,有更好的方法。。例如,如果是一个大文件,使用数据库StringBuilder
比连接更可取;就这一点而言,不需要字符串生成器或字符串concat;您只需按照相关顺序编写字符串。stringbuilder充其量只能代表一个边际的改进,但除此之外,它完全是这个答案的补充
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);