C# Dateien löschen?

3 Antworten

Also schwer ist das nicht. Hier ein Quelltext der eine Datei löscht.

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 FileDelete
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnDel_Click(object sender, EventArgs e)
        {
            
            var filePath = string.Empty;

            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                openFileDialog.FilterIndex = 2;
                openFileDialog.RestoreDirectory = true;

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    //Get the path of specified file
                    filePath = openFileDialog.FileName;
                    if (File.Exists(filePath))
                    {
                        File.Delete (filePath);
                    }
                }
            }

            MessageBox.Show("Datei gelöscht: " + filePath,"Datei gelöscht", MessageBoxButtons.OK);
        }
    }
}


Woher ich das weiß:eigene Erfahrung
System.IO.File.Delete("my/file/path.txt");

Such mal bei Google nach sowas wie "C# Datei löschen", dazu findest Du über 150k Ergebnisse.

Woher ich das weiß:Berufserfahrung

File.Delete(StringPfad zur datei)

Löscht dir die datei. Du brauchst natürlich die entsprechenden Berechtigungen diese Datei zu löschen ansonsten Fliegt dir ne exception.

AbgeNickt411 
Fragesteller
 15.12.2020, 11:18

Mhh ich bekomm keine exc weil ich das programm als admin starte. Ich hab es z.b. so probiert:

File.Delete(Directory.GetFiles(selectedPath.Text, dataList.SelectedItem.ToString()).ToString());

0
FouLou  15.12.2020, 11:20
@AbgeNickt411

Ja wird nicht gehen.

Get Files Liefert dir nen String Array zurück. Das sind potenziell mehrere Pfade.

Du musst das Stringarray noch durchlaufen und dann für jedes einzelne element File.Delete Aufrufen.

ToString auf nen Stringarray wird dir keinen benutzbaren dateipfad liefern.

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:22
@FouLou

Hä ich versteh jetzt nicht wie ich das auslesen soll

0
FouLou  15.12.2020, 11:24
@AbgeNickt411
String[] myfiles = Directory.GetFiles("Deine argumente");

foreach(String currentPath in myfiles){
  File.Delete(currentPath);
}

Halt einfach die Elemente des String Arrays durchlaufen Oo

Am besten da sganze dann noch in nen Try/Catch packen und im Catch nen breakpunkt rein damit du einfacher siehst wenn da was fliegt.

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:32
@FouLou

Ok ich krieg diese Exception:

Ein Teil des Pfades "C:\Users\MyUser\Desktop\Workspaces\Visual Studio\ProgrammName\bin\Debug\System.Windows.Forms.ListBox+ObjectCollection" konnte nicht gefunden werden.

0
FouLou  15.12.2020, 11:38
@AbgeNickt411
System.Windows.Forms.ListBox+ObjectCollection"

Das sieht mir nicht wie eine datei aus. XD

Schau mal was genau:

dataList.SelectedItem

SelectedItem ist kein String und die ToString von dem Objekt liefert dir auch keinen pfad zurück.

Da musste wohl nochmal genauer schauen wie du deinen Dateinamen aus diesem Objekt raus bekommst.

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:39
@FouLou

ok ich bin nämlich dabei ein kleinen antiviren scanner zu schreiben xD

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:41
@FouLou

Jetzt ist es nur noch eine ObjectCollection xD aber der gleiche pfard D:

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:44
@FouLou

Jetzt geht es nur dateien auf die zugegriffen werden können nciht gelöscht werden

0
FouLou  15.12.2020, 11:48
@AbgeNickt411

Siehe kommentare von Danek.

Dateien die Benutzt werden kann man nicht einfach so löschen.

Sicherlich gibt es mittel und wege. (Wie du sagtest machen vierenscanner ja nichts anderes)

Aber da musst du dich ggf. im netz belesen wie man eine Geöffnete datei im C# löschen könnte.

Es kann gut möglich sein das du mit c# nicht drann kommst weil der kram nicht tief genug ins system eingreift. bzw. Das drankommen Komplizierter wird als z.b. in c++

0
AbgeNickt411 
Fragesteller
 15.12.2020, 11:51
@FouLou

Okay danke mir geht es erstmal darum das überhaupt die dateien gelöscht weren

0