Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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#.net中的文件处理_C#_.net - Fatal编程技术网

C#.net中的文件处理

C#.net中的文件处理,c#,.net,C#,.net,这是我想做的事情的清单。我有一份申请表 转到某一行。我知道如何以串行方式进行,但是否有任何方法可以跳转到特定的行号 以查找行的总编号 如果文件不是太大,您可以尝试 这会将整个文件读入一个字符串数组,其中每一行都是数组的一个元素 例如: var fileName = @"C:\MyFolder\MyFileName.txt"; var contents = System.IO.File.ReadAllLines(fileName); Console.WriteLine("Line: 10: "

这是我想做的事情的清单。我有一份申请表

  • 转到某一行。我知道如何以串行方式进行,但是否有任何方法可以跳转到特定的行号

  • 以查找行的总编号


  • 如果文件不是太大,您可以尝试

    这会将整个文件读入一个字符串数组,其中每一行都是数组的一个元素

    例如:

    var fileName = @"C:\MyFolder\MyFileName.txt";
    var contents = System.IO.File.ReadAllLines(fileName);
    
    Console.WriteLine("Line: 10: " + contents[9]);
    Console.WriteLine("Number of lines:");
    Console.WriteLine(contents.Lenght);
    
    但要注意:这会将整个文件读入内存。

    如果文件太大:

    打开文件(),并创建一个字典来存储每行的偏移量。扫描每一行,并存储偏移量。现在你可以到每一行,你有了行数

    var lineOffset = new Dictionary<int, long>();
    using (var rdr = System.IO.File.OpenText(fileName)) {
       int lineNr = 0;
       lineOffset.Add(0,0);
       while (rdr.ReadLine() != null)) {
           lineNr++;
           lineOffset.Add(lineNr, rdr.BaseStream.Position);
       }
    
       // Goto line 10
       rdr.BaseStream.Position = lineOffset[10];
       var line10 = rdr.ReadLine();
    }
    
    var lineOffset=newdictionary();
    使用(var rdr=System.IO.File.OpenText(文件名)){
    int-lineNr=0;
    lineOffset.Add(0,0);
    while(rdr.ReadLine()!=null)){
    lineNr++;
    lineOffset.Add(lineNr、rdr.BaseStream.Position);
    }
    //转到10号线
    rdr.BaseStream.Position=lineOffset[10];
    var line10=rdr.ReadLine();
    }
    
    如果文件不是太大,您可以尝试

    这会将整个文件读入一个字符串数组,其中每一行都是数组的一个元素

    例如:

    var fileName = @"C:\MyFolder\MyFileName.txt";
    var contents = System.IO.File.ReadAllLines(fileName);
    
    Console.WriteLine("Line: 10: " + contents[9]);
    Console.WriteLine("Number of lines:");
    Console.WriteLine(contents.Lenght);
    
    但要注意:这会将整个文件读入内存。

    如果文件太大:

    打开文件(),并创建一个字典来存储每行的偏移量。扫描每一行,并存储偏移量。现在你可以到每一行,你有了行数

    var lineOffset = new Dictionary<int, long>();
    using (var rdr = System.IO.File.OpenText(fileName)) {
       int lineNr = 0;
       lineOffset.Add(0,0);
       while (rdr.ReadLine() != null)) {
           lineNr++;
           lineOffset.Add(lineNr, rdr.BaseStream.Position);
       }
    
       // Goto line 10
       rdr.BaseStream.Position = lineOffset[10];
       var line10 = rdr.ReadLine();
    }
    
    var lineOffset=newdictionary();
    使用(var rdr=System.IO.File.OpenText(文件名)){
    int-lineNr=0;
    lineOffset.Add(0,0);
    while(rdr.ReadLine()!=null)){
    lineNr++;
    lineOffset.Add(lineNr、rdr.BaseStream.Position);
    }
    //转到10号线
    rdr.BaseStream.Position=lineOffset[10];
    var line10=rdr.ReadLine();
    }
    
    这将有助于您的第一点:

    这将有助于您的第一点:

    您是否尝试了FileStream类?如果不进行迭代,无法访问文件中的特定行号,也无法获取行号(如果您希望的话,开发人员可以将其隐藏)。如果可以更改文件格式,则可能需要添加一个页眉或页脚,其中的索引会告诉每行的偏移量。是否尝试了FileStream类?如果不进行迭代,就无法访问文件中的特定行号,也无法获取行数(如果您希望的话,开发人员可以将其隐藏)。如果可以更改文件格式,则可能需要添加一个页眉或页脚,其索引告诉每行的偏移量。运行此代码时会显示一个错误。错误1“System.Collections.Generic.Dictionary.Add(int,int)”的最佳重载方法匹配有一些无效参数。我明白了,这是因为位置是长的。我改了密码。您的文件大小是多少?除非您有数百个文件,否则我建议使用ReadAllLines()。更简单的是,这取决于目标机器的规格、你需要这些数据的速度、应用程序中数据的重要性以及你需要在内存中保存数据的时间(毫秒-天)。但我想的是兆字节,在现代计算机上,10MB应该不是问题。在我运行此代码时,会显示一个错误。错误1“System.Collections.Generic.Dictionary.Add(int,int)”的最佳重载方法匹配有一些无效参数。我明白了,这是因为位置是长的。我改了密码。您的文件大小是多少?除非您有数百个文件,否则我建议使用ReadAllLines()。更简单的是,这取决于目标机器的规格、你需要这些数据的速度、应用程序中数据的重要性以及你需要在内存中保存数据的时间(毫秒-天)。但我想的是兆字节,在现代计算机上,10MB应该不是问题。