2009-08-04 18 views
6

Ich versuche ein Programm zu erstellen, um alle Dateien von einem Verzeichnis in ein anderes zu kopieren. Aber ich laufe in einem grundlegenden Problem. Es sagt indentifier erwartet, wenn ich versuche, auf Linie zu kompilieren 52.C# Bezeichner erwartet?

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main() 
     { 
     } 

     public bool RecursiveCopy() 
     { 
      string origDir = @"D:\Documents and Settings\Dub\My Documents\HoN Updates\test"; 
      string destDir = @"C:\Games\HoN"; 
      bool status = false; 
      //get all the info about the original directory 
      DirectoryInfo dirInfo = new DirectoryInfo(origDir); 
      //retrieve all the _fileNames in the original directory 
      FileInfo[] files = dirInfo.GetFiles(origDir); 
      //always use a try...catch to deal 
      //with any exceptions that may occur 
      try 
      { 
       //loop through all the file names and copy them 
       foreach (string file in Directory.GetFiles(origDir)) 
       { 
        FileInfo origFile = new FileInfo(file); 
        FileInfo destFile = new FileInfo(file.Replace(origDir, destDir)); 
        //copy the file, use the OverWrite overload to overwrite 
        //destination file if it exists 
        System.IO.File.Copy(origFile.FullName, destFile.FullName, true); 
        //TODO: If you dont want to remove the original 
        //_fileNames comment this line out 
        File.Delete(origFile.FullName); 
        status = true; 
       } 
       Console.WriteLine("All files in " + origDir + " copied successfully!"); 
      } 
      catch (Exception ex) 
      { 
       status = false; 
       //handle any errors that may have occurred 
       Console.WriteLine(ex.Message); 
      } 
      return status; 
     } 

     public string origDir = @"D:\Documents and Settings\Dub\My Documents\HoN Updates\test"; // ERROR HERE 
     public string destDir = @"C:\Games\HoN"; // ERROR HERE 

     static void RecursiveCopy(origDir, destDir) 
     { 
      Console.WriteLine("done"); 
      Console.ReadLine(); 
     } 
    } 
} 

Antwort

16

Sie haben keine Typbezeichner auf Ihre Argumentliste hier

static void RecursiveCopy(origDir, destDir) 

geben sollte

static void RecursiveCopy(string origDir, string destDir) 
3

Ihre Methode RecursiveCopy sein hat zwei Parameter ohne ihre Typen aufgeführt. Es sollte dies sein:

static void RecursiveCopy(string origDir, string destDir) 
0

cSie fehlen die Parametertypen in der RecursiveCopy Methodendeklaration. Ändern Sie einfach

static void RecursiveCopy(origDir, destDir) 

zu

static void RecursiveCopy(String origDir, String destDir) 

und alles ist in Ordnung.

2

Hier ist Ihr Problem:

static void RecursiveCopy(origDir, destDir) 

Sie geben nicht die Typen für die Parameter, vielleicht sollten Sie den folgenden:

static void RecursiveCopy(string origDir, string destDir) 

Es gibt jedoch mehr Probleme, die ich habe es bemerkt. Es ist möglich, dass Sie immer noch auf diese arbeiten, aber von dem, was Sie gepostet haben:

  • Sie nie Ihre RecursiveCopy Methode aufrufen. Vielleicht meinst du zu rufen Sie es von Main() anstatt eine Überlastung mit zwei Parametern zu deklarieren?

  • Sie deklarieren zwei öffentliche Felder origDir und destDir, aber verwenden Sie sie nie. Stattdessen erstellen Sie zwei lokale Variablen in RecursiveCopy() und verwenden diese stattdessen. Wollten Sie Parameter erstellen oder stattdessen die öffentlichen Felder verwenden?

  • Ihre Kopie ist nicht wirklich zu seinem Namen von "rekursiv".

+1

"Vielleicht wollten Sie es von Main() aus aufrufen, statt eine Überladung mit zwei Parametern zu deklarieren?" - Scheint so, als ob es die Absicht ist, erklärt die fehlenden Typenbezeichner. –

Verwandte Themen