Как открыть файлы.rtf в виде текстового потока

Я очень, очень новичок в C# и.net и пытаюсь это понять.

Я использую решение о том, как читать все файлы в определенной папке и пытаюсь применить в моем коде ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace HowToCopyTextFiles
{
  class Program
  {
    static void Main(string[] args)
    {
      StringBuilder sb = new StringBuilder();
      foreach (string txtName in Directory.GetFiles(@"C:\Users\Environ ment\Desktop\newfolder","*.rtf"))
      {
        using (StreamReader sr = new StreamReader(txtName))
        {
          sb.Append(sr.ReadToEnd());
          sb.AppendLine();
        }
      }
        Console.Write(sb.ToString());
        Console.ReadLine(); 
    }
  }
}

Результат в порядке, но в конце моего тестового файла он показывает имя среды.

лайк.

this is content of first file
this is content of second file
↑My environment full name                                            ↑My
environment full name        ↑My environment full name (Yes 3 times)

Я использую CS-скрипт, это из-за этого?

При использовании файлов.txt все работает нормально. поэтому вопрос в том, как правильно открыть файлы.rtf в виде текстового потока?

1 ответ

Решение

Если файл rtf открыт, он иногда сохраняет временный файл супер скрытого (даже не отображаемого параметра скрытого файла) файла как ~filename.rtf, который также читается C#.

Я использовал код здесь: C# - Получить список файлов, исключая те, которые скрыты

DirectoryInfo directory = new DirectoryInfo(@"C:\temp");
FileInfo[] files = directory.GetFiles();

var filtered = files.Where(f => !f.Attributes.HasFlag(FileAttributes.Hidden));

foreach (var f in filtered)
{
    Debug.WriteLine(f);
}

Это решило мою проблему.

Другие вопросы по тегам