我需要删除一个文本文件的确切行,但我不能为我锻炼的生活如何去这样做。
任何建议或例子将不胜感激?
相关问题
有效的方式来删除一个文本文件中的线(C#)
我需要删除一个文本文件的确切行,但我不能为我锻炼的生活如何去这样做。
任何建议或例子将不胜感激?
相关问题
有效的方式来删除一个文本文件中的线(C#)
如果你想删除的行是基于该行的内容:
string line = null;
string line_to_delete = "the line i want to delete";
using (StreamReader reader = new StreamReader("C:\\input")) {
using (StreamWriter writer = new StreamWriter("C:\\output")) {
while ((line = reader.ReadLine()) != null) {
if (String.Compare(line, line_to_delete) == 0)
continue;
writer.WriteLine(line);
}
}
}
或者,如果它是基于行号:
string line = null;
int line_number = 0;
int line_to_delete = 12;
using (StreamReader reader = new StreamReader("C:\\input")) {
using (StreamWriter writer = new StreamWriter("C:\\output")) {
while ((line = reader.ReadLine()) != null) {
line_number++;
if (line_number == line_to_delete)
continue;
writer.WriteLine(line);
}
}
}
要做到这一点,最好的办法就是打开在文本模式下的文件,读取的ReadLine()各行,然后将其写入具有的WriteLine)一个新的文件(跳过你要删除的一条线。
有没有通用删除-A-线从文件功能,据我所知。
这样做,如果该文件是不是很大的一个方法是所有行加载到一个数组:
string[] lines = File.ReadAllLines("filename.txt");
string[] newLines = RemoveUnnecessaryLine(lines);
File.WriteAllLines("filename.txt", newLines);
实际上,你可以使用C#泛型这使它真正的轻松:
var file = new List<string>(System.IO.File.ReadAllLines("C:\\path"));
file.RemoveAt(12);
File.WriteAllLines("C:\\path", file.ToArray());
没有火箭三英代码需要。希望这个简单的和短的代码将帮助 。
List linesList = File.ReadAllLines("myFile.txt").ToList();
linesList.RemoveAt(0);
File.WriteAllLines("myFile.txt"), linesList.ToArray());
或使用该
public void DeleteLinesFromFile(string strLineToDelete)
{
string strFilePath = "Provide the path of the text file";
string strSearchText = strLineToDelete;
string strOldText;
string n = "";
StreamReader sr = File.OpenText(strFilePath);
while ((strOldText = sr.ReadLine()) != null)
{
if (!strOldText.Contains(strSearchText))
{
n += strOldText + Environment.NewLine;
}
}
sr.Close();
File.WriteAllText(strFilePath, n);
}
阅读并记住每一行
标识要摆脱一个
忘了说了一个
写其余扔在文件的顶部
你是一个Unix操作系统上?
你可以用“sed的”流编辑器做到这一点。 阅读手册页“的sed”
这可以通过三个步骤来完成:
// 1. Read the content of the file
string[] readText = File.ReadAllLines(path);
// 2. Empty the file
File.WriteAllText(path, String.Empty);
// 3. Fill up again, but without the deleted line
using (StreamWriter writer = new StreamWriter(path))
{
foreach (string s in readText)
{
if (!s.Equals(lineToBeRemoved))
{
writer.WriteLine(s);
}
}
}
什么? 使用文件打开,寻找位置,然后使用空流擦除线。
Gotch呢? 简单,流,无阵列吃内存,速度快。
VB的这项工作。例搜索线文化= id其中文化是namevalue和id的值,我们希望将其更改为文化= EN
Fileopen(1, "text.ini")
dim line as string
dim currentpos as long
while true
line = lineinput(1)
dim namevalue() as string = split(line, "=")
if namevalue(0) = "line name value that i want to edit" then
currentpos = seek(1)
fileclose()
dim fs as filestream("test.ini", filemode.open)
dim sw as streamwriter(fs)
fs.seek(currentpos, seekorigin.begin)
sw.write(null)
sw.write(namevalue + "=" + newvalue)
sw.close()
fs.close()
exit while
end if
msgbox("org ternate jua bisa, no line found")
end while
这是all..use #D