如何在文本文件中上下移动项目/值。目前我的程序读取文本文件,使用一段时间确保在没有更多行要读取时停止。我使用if语句来检查counter是否等于我想要移动的值的行。我不知道如何从这里继续。
_upORDown = 1;
using (StreamReader reader = new StreamReader("textfile.txt"))
{
string line = reader.ReadLine();
int Counter = 1;
while (line != null)
{
if (Counter == _upORDown)
{
//Remove item/replace position
}
Counter++;
}
}
答案 0 :(得分:3)
您可以在内存中读取文件,将行移动到您需要的位置,然后将文件写回。您可以使用ReadAllLines
和WriteAllLines
。
此代码将位置i
的字符串向上移动一行:
if (i == 0) return; // Cannot move up line 0
string path = "c:\\temp\\myfile.txt";
// get the lines
string[] lines = File.ReadAllLines(path);
if (lines.Length <= i) return; // You need at least i lines
// Move the line i up by one
string tmp = lines[i];
lines[i] = lines[i-1];
lines[i-1] = tmp;
// Write the file back
File.WriteAllLines(path, lines);
答案 1 :(得分:0)
@dasblinkenlight的答案,使用LINQ:
string path = "c:\\temp\\myfile.txt";
var lines = File.ReadAllLines(path);
File.WriteAllLines(
path,
lines.Take(i).Concat(
lines.Skip(i+1)
)
);
这将删除位置i
的行(从零开始)并向上移动其他行。
添加到新行:
string path = "c:\\temp\\myfile.txt";
var lines = File.ReadAllLines(path);
var newline = "New line here";
File.WriteAllLines(
path,
lines.Take(i).Concat(
new [] {newline}
).Concat(
lines.Skip(i+1)
)
);