从文件读取和提取

本文关键字:提取 读取 文件 | 更新日期: 2023-09-27 18:35:28

>我有一个包含~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:我不知道我现在如何匹配文件中留下的每个数字。我想匹配它们并查看文件中有多少次女巫编号。

有什么帮助吗?

从文件读取和提取

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

您到底在哪一部分遇到问题?在伪代码中,这是您想要的:

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

因此,开始实施它,并随时在您遇到问题的任何特定行上提出问题。我发布的每一行代码都包含足够的指针来找出 C# 代码或术语以进行 Web 搜索。

你没有说你被卡在哪里。分解问题:

 Write and run minimal C# program
 Read lines from file
 Break up one line
 write result line to a file

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

您可能会发现字符串拆分功能很有用。

因为它

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

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();
            }
        }
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]);
    }

一些指针开始:StreamReader.Readline()String.Split()。两页上都有示例。

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

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

然后将它们写入一个新文件中,如下所示:

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

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

试试这个...

// 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();