从文件中读取和提取

时间:2013-10-15 08:45:09

标签: c#

我有一个大约3毫米行的文件。每行包含如下记录:

1|2|3|4|5|6|7|8|9

正好8个分隔符,如'|'在每一行。我正在寻找一种方法来读取这个文件,然后从每一行中提取最后的'9'数字并将其存储到另一个文件中。

编辑:

好的,这就是我已经完成的事情。

using (StreamReader sr = new StreamReader(filepath))
    using (StreamWriter sw = new StreamWriter(filepath1))
    {
        string line = null;
        while ((line = sr.ReadLine()) != null)
            sw.WriteLine(line.Split('|')[8]);
    }

File.WriteAllLines("filepath", File.ReadAllLines(filepath).Where(l => !string.IsNullOrWhiteSpace(l)));

读取文件,提取最后的数字,然后写入新文件并清除空白行。最后一个数字是10-15个符号,我想先提取6.我继续阅读并尝试一些,当我完成或有一些问题我会再次编辑。

由于

编辑2: 好的,这里我从数字中取出前8位数字:

 sw.WriteLine(line.Substring(0, Math.Min(line.Length, 8)));

编辑3: 我不知道如何才能匹配文件中剩下的每个数字。我想匹配它们并查看女巫号码在文件中的次数。

任何帮助?

8 个答案:

答案 0 :(得分:3)

  

我正在寻找一种方法来读取此文件,然后仅从每一行提取最后一个[..]号并将其存储到另一个文件中。

你遇到什么问题?在伪代码中,这就是你想要的:

fileReader = OpenFile("input")
fileWriter = OpenFile("output")

while !fileReader.EndOfFile 
    line = fileReader.ReadLine
    records[] = line.Split('|')
    value = records[8]
    fileWriter.WriteLine(value)
do

因此,开始实施它,并随时就您遇到问题的任何特定行提出问题。我发布的每行代码都包含足够的指针,可以找出C#代码或用于网络搜索的术语。

答案 1 :(得分:2)

你没有说你被困在哪里。打破问题:

 Write and run minimal C# program

 Read lines from file

 Break up one line

 write result line to a file

你是否被困在其中任何一个?然后问一个具体的问题。这种分解技术是许多编程任务的关键,也是一般复杂的任务。

您可能会发现string split功能很有用。

答案 2 :(得分:2)

因为它是一个巨大的文件,你必须逐行阅读!

public IEnumerable ReadFileIterator(String filePath)
        {
            using (StreamReader streamReader = new StreamReader(filePath, Encoding.Default))
            {
                String line;
                while ((line = streamReader.ReadLine()) != null)
                {
                    yield return line;
                }
                yield break;
            }
        }

        public void WriteToFile(String inputFilePath, String outputFilePath)
        {
            using (StreamWriter streamWriter = new StreamWriter(outputFilePath, true, Encoding.Default))
            {
                foreach (String line in ReadFileIterator(inputFilePath))
                {
                    String[] subStrings = line.Split('|');
                    streamWriter.WriteLine(subStrings[8]);
                }
                streamWriter.Flush();
                streamWriter.Close();
            }
        }

答案 3 :(得分:1)

使用String.Split()获取数组中的行并获取最后一个元素并将其存储到另一个文件中。对每一行重复此过程。

答案 4 :(得分:1)

StreamReader.Readline()String.Split()开始的一些指针。两个页面都有例子。

答案 5 :(得分:1)

使用LINQ,您可以执行以下操作来过滤数字:

var numbers = from l in File.ReadLines(fileName)
              let p = l.Split('|')
              select p[8];

然后将它们写入一个新文件:

File.WriteAllText(newFileName, String.Join("\r\n", numbers));

答案 6 :(得分:1)

using (StreamReader sr = new StreamReader("input"))
    using (StreamWriter sw = new StreamWriter("output"))
    {
        string line = null;
        while ((line=sr.ReadLine())!=null)
            sw.WriteLine(line.Split('|')[8]);
    }

答案 7 :(得分:1)

试试这个......

// Read the file and display it line by line.
System.IO.StreamReader file = 
   new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
     string[] words = s.Split('|');
    string value = words [8]
   Console.WriteLine (value);

}

file.Close();