0

私は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-scriptを使っているのですが、そのせいでしょうか?

.txt ファイルを使用している間は、正常に動作しています。問題は、.rtf ファイルをテキスト ストリームとして適切に開く方法です。

4

1 に答える 1

0

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

これで私の問題は解決しました。

于 2016-06-02T09:13:53.407 に答える