Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文本写入文件中间_C# - Fatal编程技术网

C# 将文本写入文件中间

C# 将文本写入文件中间,c#,C#,有没有一种方法可以从文件中的某个点向文件写入文本 例如,我打开一个包含10行文本的文件,但我想在第5行中写入一行文本 我想一种方法是使用readalllines方法将文件中的文本行作为数组返回,然后在数组中的某个索引处添加一行 但有一个区别是,有些集合只能在末尾添加成员,有些集合可以在任何目的地添加成员。为了进行双重检查,数组总是允许我在任何索引处添加值,对吗?(我相信我的一本书说的是另一个道理) 还有,有没有更好的办法 谢谢 如果你正在读/写小文件(比如说,在20兆字节以下,是的,我认为是20

有没有一种方法可以从文件中的某个点向文件写入文本

例如,我打开一个包含10行文本的文件,但我想在第5行中写入一行文本

我想一种方法是使用readalllines方法将文件中的文本行作为数组返回,然后在数组中的某个索引处添加一行

但有一个区别是,有些集合只能在末尾添加成员,有些集合可以在任何目的地添加成员。为了进行双重检查,数组总是允许我在任何索引处添加值,对吗?(我相信我的一本书说的是另一个道理)

还有,有没有更好的办法


谢谢

如果你正在读/写小文件(比如说,在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;
    }
}