有没有办法可以从文件中的某个位置将文字写入文件?
例如,我打开一个包含10行文本的文件,但我想在第5行写一行文字。
我想一种方法是使用readalllines方法将文件中的文本行作为数组返回,然后在数组中的某个索引处添加一行。
但有一个区别是,某些集合只能添加成员到最后,有些集合可以在任何目的地添加。要仔细检查,数组总是允许我在任何索引处添加一个值,对吧? (我敢肯定我的一本书说其他明智的。)
此外,还有更好的方法吗?
由于
答案 0 :(得分:3)
哦,叹了口气。查找“主文件更新”算法。
这是伪代码:
open master file for reading.
count := 0
while not EOF do
read line from master file into buffer
write line to output file
count := count + 1
if count = 5 then
write added line to output file
fi
od
rename output file to replace input file
答案 1 :(得分:1)
如果您正在读/写小文件(例如,20兆字节以下 - 是的,我认为20M“小”)并且不经常写(如同,而不是每秒几次),那么只需读/写整件事。
文本文档等串行文件不是为随机访问而设计的。这就是数据库的用途。
答案 2 :(得分:1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Class1
{
static void Main()
{
var beatles = new LinkedList<string>();
beatles.AddFirst("John");
LinkedListNode<string> nextBeatles = beatles.AddAfter(beatles.First, "Paul");
nextBeatles = beatles.AddAfter(nextBeatles, "George");
nextBeatles = beatles.AddAfter(nextBeatles, "Ringo");
// change the 1 to your 5th line
LinkedListNode<string> paulsNode = beatles.NodeAt(1);
LinkedListNode<string> recentHindrance = beatles.AddBefore(paulsNode, "Yoko");
recentHindrance = beatles.AddBefore(recentHindrance, "Aunt Mimi");
beatles.AddBefore(recentHindrance, "Father Jim");
Console.WriteLine("{0}", string.Join("\n", beatles.ToArray()));
Console.ReadLine();
}
}
public static class Helper
{
public static LinkedListNode<T> NodeAt<T>(this LinkedList<T> l, int index)
{
LinkedListNode<T> x = l.First;
while ((index--) > 0) x = x.Next;
return x;
}
}