Jump to content
Unity Insider Forum

Dateien von einem Verzeichnis laden


peachplayer

Recommended Posts

Hallo Leute

Weiss jemand wie man in unity Dateien mit der Endung ".xml" von einem Verzeichnis laden kann?

Habs wie folgt probiert:

  public void Daten_laden()
    {
        string[] files = Directory.GetFiles("E:/unity projekte/xml_files/", "*.xml", SearchOption.AllDirectories);
 

        for (int i = 0; i < files.Length; i++)
        {
            if (File.Exists(files[i]))
            {
  
              MyXML.SerializeToXML(files[i], "E:/unity projekte/New Unity Project40.01 - Kopie/files[i]");
            }
             
            else
            {
                Debug.Log("Datei nicht gefunden!");


            }
        }
}

Danach kommt folgende Fehlermeldung:

Assets/Anzeige1.cs(716,21): error CS0411: The type arguments for method `MyXML.SerializeToXML<T>(System.Collections.Generic.List<T>, string)' cannot be inferred from the usage. Try specifying the type arguments explicitly

Kann mir jemand helfen?

Gruss, peachplayer

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin!

Wie der Name sagt, ist SerializeToXML dafür da, Objekte zu nehmen und diese ins XML-Format zu schreiben. Du versuchst hier also, etwas zu speichern und nicht zu laden. Ansonsten sieht es stark so aus, dass du bei dem string-Parameter einfach nur geraten hast, was da reinkommt - davon würde ich abraten. Weiter kann ich nicht helfen, weil "MyXML" mir nichts sagt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

eigentlich möchte ich bloss .xml dateien von einem bestehende ordner in einen anderen ordner kopieren.

Habs wie folgt probiert:

    public void kopieren()
    {
        
        string[] files = Directory.GetFiles("E:/unity projekte/xml_files/", "*.xml", SearchOption.AllDirectories);

        

        for (int i = 0; i < files.Length; i++)
        {
            if (File.Exists(files[i]))
            {
                string targetCachePath = @"E:/unity projekte/New Unity Project40.01 - Kopie/xml";

             if (System.IO.Directory.Exists(targetCachePath))
                {
                FileUtil.DeleteFileOrDirectory(targetCachePath);
           
              }
               FileUtil.CopyFileOrDirectory("E:/unity projekte/xml_files", targetCachePath);
               FileUtil.CopyFileOrDirectory(targetCachePath, "E:/unity projekte/New Unity Project40.01 - Kopie/");
   
           
            }
             
            else
            {
                Debug.Log("Datei nicht gefunden!");


            }
        }
}

Jetzt kommt eine Fehlermeldung :

IOException: Failed to Copy File / Directory from 'E:/unity projekte/New Unity Project40.01 - Kopie/xml' to 'E:/unity projekte/New Unity Project40.01 - Kopie/': destination path already exists

Gruss, peachplayer

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine Datei zu kopieren ist eine Sache von einer Zeile. Du musst da nicht erst in einen Cache kopieren und dann wieder raus. Da dein Cache-Ordner sowieso derselbe ist, in den du am Ende kopierst, kann deine zweite Copy-Zeile nur failen, da der erste und der zweite Parameter gleich sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  public void kopieren()
    {
        
        string[] files = Directory.GetFiles("E:/unity projekte/xml_files/", "*.xml", SearchOption.AllDirectories);

        

        for (int i = 0; i < files.Length; i++)
        {
            if (File.Exists(files[i]))
            {
                string targetCachePath = @"E:/unity projekte/New Unity Project40.01 - Kopie/xml";

             if (System.IO.Directory.Exists(targetCachePath))
                {
                FileUtil.DeleteFileOrDirectory(targetCachePath);
           
              }
            
               FileUtil.CopyFileOrDirectory(targetCachePath, "E:/unity projekte/New Unity Project40.01 - Kopie/");
   
           
            }
             
            else
            {
                Debug.Log("Datei nicht gefunden!");


            }
        }
}

IOException: Failed to Copy File / Directory from 'E:/unity projekte/New Unity Project40.01 - Kopie/xml' to 'E:/unity projekte/New Unity Project40.01 - Kopie/': destination path already exists.

...kommt immer noch dieselbe Fehlermeldung!

Kann man nicht in ein bestehendes Verzeichnis kopieren mit dem befehl FileUti.CopyFileOrDirectory()?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, was sagt dir die Meldung denn? Die ist doch recht eindeutig.

Du willst nach "E:/unity projekte/New Unity Project40.01 - Kopie/" kopieren, aber der Pfad existiert schon.

Mal davon abgesehen löschst du direkt vorher den Ordner, den du kopieren willst - das kann auch nicht so gut sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  public void kopieren()
    {
        string sourcePath = "E:/unity projekte/xml_files";
        string targetPath = "E:/unity projekte/New Unity Project40.01 - Kopie/";

        if (System.IO.Directory.Exists(sourcePath))
        {
            string[] files = System.IO.Directory.GetFiles(sourcePath);

            // Copy the files and overwrite destination files if they already exist.
            foreach (string s in files)
            {
                // Use static Path methods to extract only the file name from the path.
                var fileName = System.IO.Path.GetFileName(s);
                var destFile = System.IO.Path.Combine(targetPath, fileName);
                System.IO.File.Copy(s, destFile, true);
            }
        }
        else
        {
            Console.WriteLine("Source path does not exist!");
        }
    
    }

es geht leider nur so (siehe oben).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...