2017-03-19 6 views
-1

したがって、基本的にはインデックス作成とデータの保存を試みます。 DirectoryInfoクラスを使用して、さまざまな配列のディレクトリとファイルを格納する2つのリストを作成しました。リストに配列データを追加する:System.DirectoryInfo []を文字列に変換できません

SubDirectoriesList.Add(subdirectories);DirectoryInfo[] directoryFiles = di.GetFiles(SubDirectoriesList);、およびFilesList.Add(directoryFiles);にコンパイルエラーが発生します。

述べ、それらのほとんどは:未割り当てのローカル変数の

使用を。 System.DirectoryInfo []を文字列に変換できません。

私はいくつかのことを試しましたが、本当に近いと感じています。私はいくつかのC#Listチュートリアルを見直しましたが、スーパーシンプルなサンプルを自分の関数に変換できませんでした。

 List<string> FilesList; 
     List<string> SubDirectoriesList; 

     DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath); 

     //GETS SUBDIRECTORIES FROM SELECTED PATH 
     DirectoryInfo[] subdirectories = di.GetDirectories(); 
     for (int i = 0; subdirectories.Length >= 0; i++) 
     { 
      if (i > subdirectories.Length - 1) 
      { 
       break; 
      } 

      //ADD SUBDIRECTORIES TO LIST 
      SubDirectoriesList.Add(subdirectories); 
     } 

     //GETS FILES FROM SUBDIRECTORIES IN LIST 
     DirectoryInfo[] directoryFiles = di.GetFiles(SubDirectoriesList); 
     for (int i = 0; directoryFiles.Length >= 0; i++) 
     { 
      if (i > directoryFiles.Length - 1) 
      { 
       break; 
      } 

      //ADD FILES TO FILES LIST 
      FilesList.Add(directoryFiles); 
     } 
    } 
+0

エラーは非常に明白です。リストを新しくしなかったので、サブディレクトリはstring型ではありません。サブディレクトリの種類が何であるかのリストを持つか、文字列に変換します。 – master2080

+0

これは、オブジェクトインスタンスの作成とループ内のインデックスの使用という、とても簡単なことです。私たちはあなたにスプーンを供給することはできません。自分で基本を学ばなければなりません。がんばろう! –

+0

"変換できません...エラー"が表示された場合、これは通常、誤ったパラメータを引数としてメソッドに渡していることを意味します。問題のメソッドのドキュメントを読む必要があります。どのタイプのパラメータが必要なのかを調べ、そのような型を正確に渡す必要があります。 –

答えて

0

私はあなたがこれをしようとしていたと推測:

List<string> FilesList = new List<string>(); 
List<string> SubDirectoriesList = new List<string>(); 

DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)); 

//GETS SUBDIRECTORIES FROM SELECTED PATH 
DirectoryInfo[] subdirectories = di.GetDirectories(); 
for (int i = 0; subdirectories.Length >= 0; i++) 
{ 
    if (i > subdirectories.Length - 1) 
    { 
     break; 
    } 

    //ADD SUBDIRECTORIES TO LIST 
    SubDirectoriesList.Add(subdirectories[i].FullName); 
} 

//GETS FILES FROM SUBDIRECTORIES IN LIST 

//Loop all sub directory files 
foreach (var fileItem in SubDirectoriesList) 
{ 
    string[] directoryFiles = Directory.GetFiles(fileItem); 
    for (int i = 0; directoryFiles.Length >= 0; i++) 
    { 
     if (i > directoryFiles.Length - 1) 
     { 
      break; 
     } 

     //ADD FILES TO FILES LIST 
     FilesList.Add(directoryFiles[i]); 
    } 

} 
+0

はい。完璧に感謝します。リストをインスタンス化するのは簡単でした。しかし、この例では、新しい変数を宣言するforeachループと、なぜDirectory.Info []が新しいdirectoryFiles配列を作成しようとしていないのかを確認する必要がありました。 DirectoryInfoの選択したパスを使用してデータを取得しようとしなくても、代わりにサブディレクトリ配列からデータを取得しようとしていたことに気付かなかった。 – Aspen

+0

@Aspen - あなたは歓迎です:) – Sadique

0

あなたが追加しようとしました前にあなたがちょうどあなたのリストSubDirectoriesListを初期化していないようです。

関連する問題