2016-12-31 170 views
-2

你好,我正在學習C#。無法在Main()中調用方法?

當試圖在實例中調用我的方法時,我沒有得到智能選項,我不得不輸入它。 。

我試圖建立時也有電流兩個錯誤:

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