2016-12-31 21 views
-2

こんにちは私はC#を学んでいます。Main()のメソッドを呼び出せませんか?

インスタンスでMyメソッドを呼び出そうとすると、インテリジェンスのオプションが表示されず、入力を余儀なくされます。

構築しようとしたときに、私はまた、現在の2個のエラーがあります。

1)「 『文字列[]』 『LastWriteTime』となし拡張メソッドの定義が含まれていません 『LastWriteTime』の最初の引数を受け入れます。タイプ 'string []'が見つかりました。

2)。

任意のリードが非常に高く評価されるであろう「メンバー 『MyClass.Move_Modified_Files()は』インスタンス参照してアクセスすることができない代わりに、タイプ名とそれを修飾します」!

namespace File_Mover 
{ 
    public class MyClass 
    { 
     public static string src = @"C:\Users\Bold Defiance\Desktop\FolderA"; 
     public static string dst = @"C:\Users\Bold Defiance\Desktop\FolderB"; 
     public static string[] files = System.IO.Directory.GetFiles(src, "*.txt"); 

     public static void Move_Modified_Files() 
     { 
      try 
      { 
       if (files.LastWriteTime.Date == DateTime.Today.Date) 
       { 
        File.Move(src, dst); 
        Console.WriteLine("Modified files in {0} were moved to {1}", src, dst); 
       } 
       else 
       { 
        Console.WriteLine("No new or modified files were created today."); 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine("The process failed: {0}", e.ToString()); 
      } 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      MyClass cls = new MyClass(); 
      cls.Move_Modified_Files(); 
     } 
    } 
} 

答えて

1

があなたのエラーを修正するには:

1)ファイルパスの配列を返しますSystem.IO.Directory.GetFiles

は、ここに私のコードです。各ファイルの最後の書き込み時間を確認する場合は、System.IO.File.GetLastWriteTime()を使用して完全なパスを渡すことができます。これを達成するには、配列をループする必要があります。

2.)あなたのメソッドとメンバー変数はクラス内で静的である必要はありません。メソッドを非静的にすると、このエラー/警告は消えてしまいます。

+0

また、書かれているように、 'File.Move'はディレクトリに対して動作しようとします。例外をスローしない場合は、フォルダ自体を別のフォルダに移動するだけです。 'DirectoryInfo.EnumerateFiles'はFileInfoオブジェクトの戻り値(LastWriteTimeを直接照会してMoveToにアクセスする)とその遅延評価(大規模なディレクトリの場合)に適しています – pinkfloydx33

関連する問題