C# 将文本写入文件中间
有没有一种方法可以从文件中的某个点向文件写入文本 例如,我打开一个包含10行文本的文件,但我想在第5行中写入一行文本 我想一种方法是使用readalllines方法将文件中的文本行作为数组返回,然后在数组中的某个索引处添加一行 但有一个区别是,有些集合只能在末尾添加成员,有些集合可以在任何目的地添加成员。为了进行双重检查,数组总是允许我在任何索引处添加值,对吗?(我相信我的一本书说的是另一个道理) 还有,有没有更好的办法C# 将文本写入文件中间,c#,C#,有没有一种方法可以从文件中的某个点向文件写入文本 例如,我打开一个包含10行文本的文件,但我想在第5行中写入一行文本 我想一种方法是使用readalllines方法将文件中的文本行作为数组返回,然后在数组中的某个索引处添加一行 但有一个区别是,有些集合只能在末尾添加成员,有些集合可以在任何目的地添加成员。为了进行双重检查,数组总是允许我在任何索引处添加值,对吗?(我相信我的一本书说的是另一个道理) 还有,有没有更好的办法 谢谢 如果你正在读/写小文件(比如说,在20兆字节以下,是的,我认为是20
谢谢
如果你正在读/写小文件(比如说,在20兆字节以下,是的,我认为是20M的“小”),而不是经常写(比如,在几秒钟内),然后读/写整个事情。 像文本文档这样的串行文件不是为随机访问而设计的。这就是数据库的用途。哦,唉。查找“主文件更新”算法 以下是伪代码: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
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
公共班级1
{
静态void Main()
{
var披头士=新链接列表();
披头士乐队;
LinkedListNode nextBeatles=披头士.AddAfter(披头士.First,“保罗”);
nextBeatles=披头士。AddAfter(nextBeatles,乔治);
nextBeatles=披头士。AddAfter(nextBeatles,“Ringo”);
//把1号线换成5号线
LinkedListNode paulsNode=披头士乐队。NodeAt(1);
LinkedListNode recentHindrance=披头士乐队.AddBefore(保尔斯诺德,“Yoko”);
recentHindrance=披头士乐队。AddBefore(recentHindrance,“米米阿姨”);
披头士乐队。AddBefore(最近的《吉姆神父》);
Console.WriteLine(“{0}”,string.Join(“\n”,beatles.ToArray());
Console.ReadLine();
}
}
公共静态类助手
{
公共静态LinkedListNode节点(此LinkedList l,int索引)
{
LinkedListNode x=l.第一;
而((索引--)>0)x=x.Next;
返回x;
}
}
重复:类似于:;
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;
}
}