更改txt文件中的行
本文关键字:文件 txt 更改 | 更新日期: 2023-09-27 18:21:42
C#的新功能
是否可以使用c#更改txt文件中的文本?
我想打开一个包含以下内容的文本文件:
8881
8882
8883
8884
8885
将它们放在一个数组中,将行更改为:
'8881',
'8882',
'8883',
'8884',
'8885',
然后用修改后的行写出一个新的txt文件。
string[] lines = System.IO.File.ReadAllLines(@"C:'Users'Public'TestFolder'WriteLines2.txt");
//Foreach that lists all lines
System.Console.WriteLine("WriteLines2.txt contains following lines = ");
foreach (string line in lines)
{
Console.WriteLine(line);
}
我是如何改变每一行并将它们写在一个新的txt中的?
您可以使用以下简单的LINQ查询和File.WriteAllLines
:
var newLines = from line in System.IO.File.ReadAllLines(filePath)
select String.Format("'{0}',", line);
System.IO.File.WriteAllLines(filePath, newLines);
您可以用新行覆盖同一个文件。
String path = @"C:'Users'Public'TestFolder'WriteLines2.txt";
String[] lines = System.IO.File.ReadAllLines(path);
//I'm using System.Linq to change the lines. I'm adding a "'" before and after the original token.
String[] changedLines = lines.Select(x => string.Format("'{0}',", x)).ToArray();
// I'm saving the changes to the file.
System.IO.File.WriteAllLines(path, changedLines);
你也可以在没有System.Linq的情况下完成
string[] path = @"C:'Users'Public'TestFolder'WriteLines2.txt";
string[] lines = System.IO.File.ReadAllLines(path);
// change every line
for (int index = 0; index < lines.Length; ++index)
{
lines[index] = string.Format("'{0}',", lines[index]);
}
System.IO.File.WriteAllLines(path, lines);
您可以使用linq 尝试
//read the fine and alter it by Select Function
var lines = File.ReadAllLines("file.txt").Select(item => string.Format("'{0}',",item)).ToArray();
//write the lines to disk
File.WriteAllLines("file02.txt",lines);
试试这个-
var file = File.ReadLines("path");
var sb = new StringBuilder();
foreach (var t in file)
{
if(!string.IsNullOrWhiteSpace(t))
sb.AppendLine("'" + t + "',");
}
File.WriteAllLines("path", new string[] { sb.ToString() });
var linesModified = lines.Select (l => string.Format(@"'{0}',",l));
File.WriteAllLines(@"C:'Users'Public'TestFolder'WriteLines2_Out.txt", linesModified);
编辑:使用流媒体而不是将整个文件(可能是一个大文件)加载到内存的高效版本:
void Main()
{
string inFileName = @"C:'Users'Public'TestFolder'WriteLines2.txt";
string outFileName = @"C:'Users'Public'TestFolder'WriteLines2_Out.txt";
using(var r = File.OpenText(inFileName))
using(var w = File.CreateText(outFileName))
{
string line;
while ( (line = r.ReadLine()) != null)
{
w.WriteLine(string.Format(@"'{0}',",line));
}
}
}