Kurze Frage zur Dateiumbenennung und den Umgang im Allgemeinen



  • Hey ich habe kurz eine Frage und zwar bearbeite ich gerade zum lernen ein Programm.
    Nun ist meine Aufgabe es eine Sicherungskopie zu erstellen.
    Dies ist auch kein Problem, aber ich soll die Sicherungskopie genauso benennen wie die Datei des Textes den man gerade bearbeitet oder speichert.

    Wahrscheinlich ist meine Frage recht einfach....
    Eigentlich möchte ich nur den saveFileDialog als Namen haben und die Endung .bak

    File.Move("C:\\Backup\\backup.bak", "C:\\Backup\\"+saveFileDialog1.FileName+".bak");
    

    Kann mir da jemand vielleicht einen klein wenig helfen 🙄



  • Ich verstehe Deine Frage nicht so ganz.
    Du möchtest nur den saveFileDialog als Namen haben!?

    Dann schreibe doch...

    File.Move("C:\\Backup\\backup.bak","C:\\Backup\\saveFileDialog.bak");
    

    Dann heißt die Datei "saveFileDialog.bak"

    Macht aber wenig Sinn, oder!?



  • ...



  • @Doug_HH
    Ich vermute er will den Filenamen vom Pfad trennen, nicht einen fixen Filenamen verwenden.

    @Swordfish
    Wieso, er hat doch saveFileDialog1.FileName, muss er nur noch den Pfad-Teil und ggf. die Extension entfernen.

    @RealFeejay
    Guck dir mal die System.IO.Path Klasse an. Die hat ein paar statische Funktionen die diesbezüglich hilfreich sein sollten.



  • ...



  • Hi!

    Da alle grade so um den heißen Brei herumreden... Ich mag das auchnicht wirklich, wnn man merkt jeder weiß die Lösung und sagt aber nur so sachen wie schau dir mal die und die Klasse an usw...
    Also...
    Wenn du sie einfach Kopieren möchtest..

    using System.IO;
    
    File.Copy(saveFileDialog1.FileName, /*Ich weißnicht ob man nur die Erweiterung entfernen kann, deshalb:*/ Path.GetDirectory(saveFileDialog1) + "\\" + "Path.GetFileNameWithoutExtension(saveFile...FileName) + ".bak");
    

    Edit: Ich weüsste doch noch was:

    string backupFile = saveFileDialog1.FileName;
    backupFile = backupFile.Replace(Path.GetExtension(backupFile), ".bak");
    //^^Geht zwar auch in einer Zeile, aber dann hat man nicht diese Scrollerei... also hier im Forum :)
    
    File.Copy(saveFileDialog1.FileName, backupFile);
    

    Ich hoffe ich konnte Helfen.. 😃



  • Vielleicht sagt RealFeejay mal was er konkret vorhat, so spekulieren wir nur und können ihm nicht wirklich helfen.



  • Hallo zusammen,

    ich habe so ein ähnliches Problem und komme nicht weiter. Ich möchte diverse Bilddateien umbenennen. Das Ganze soll so aussehen:
    - Benutzer wählt die zu ändernden Bilder aus und diese werden in eine Listbox eingetragen
    - ich splitte mir den kompletten Pfad auf
    - ich setze mir den neuen Namen zusammen.
    - danach möchte ich die bestehende Datei in einen anderen Ordner verschieben und in den neuen Namen umbenennen

    Bei der Methode File.Move(pfad1, pfad2) erscheint immer die Meldung "Ein Pfad konnte nicht gefunden werden.

    Anbei mein Code, vielleicht wisst ihr weiter. Kann man denn überhaupt indirekte Pfadangaben verwenden oder kann ich nur einen absoluten Pfad vorgeben?

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    
    namespace Bilder_umbennen
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void buttonOeffnen_Click(object sender, EventArgs e)
            {
                openFileDialog1.ShowDialog();
            }
    
            private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
            {
                //ein neues Array vom Typ string anlegen und die markierten Namen kopieren
                string[] dateien = openFileDialog1.FileNames;
    
                //wenn sich noch Einträge in dem Listenfeld befinden, löschen wir sie
                if (listBoxAlt.Items.Count != 0)
                    listBoxAlt.Items.Clear();
    
                //die Namen in das Listenfeld kopieren
                foreach (string datei in dateien)
                    listBoxAlt.Items.Add(datei);
            }
    
            private void buttonUmbenennen_Click(object sender, EventArgs e)
            {
                listBoxAlt.SelectedIndex = 0;
                string pfad = listBoxAlt.SelectedItem.ToString();
                string[] split = pfad.Split(new Char[] { '\\', '\\', '\\', '\\', '\\', '.' }); //C:\Users\Thomas\Pictures\Eigene Bilder\Bild1001.JPG
                string pfad2 = split[0] + "/" + split[1] + "/" + split[2] + "/" + split[3] + "/" + split[4] + "/" + "Umbenannt" + "/" + textBoxBildnummer.Text + "." + split[6]; //C:\Users\Thomas\Pictures\Eigene Bilder\Umbenannt\1.JPG
                File.Move(pfad, pfad2);
            }
        }
    }
    

    Vielen Dank für eure Hilfe



  • Dann wird wohl pfad oder pfad2 kaputt sein (oder der Zielordner noch nicht existieren)
    Gib die beiden vor File.Move doch einfach mal aus 😉

    An "C:\Users\Thomas\Pictures\Eigene Bilder\" kommst du auch via Path.GetDirectoryName() und müsstest nur noch "Umbenannt" etc. dranhängen.
    An "Bild1001.JPG" kommst du via Path.GetFileName()


Anmelden zum Antworten