C# Dateien löschen?
Hey,
ich möchte mit C# eine Dateilöschen lassen nur ich komme nicht weiter ich habe schon verschiedenes Probiert und nichts geht von dem was ich probiert habe könntet ihr mir helfen?
Mfg
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);
}
}
}
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.
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.
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.
Hä ich versteh jetzt nicht wie ich das auslesen soll
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.
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.
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.
ok ich bin nämlich dabei ein kleinen antiviren scanner zu schreiben xD
Jetzt ist es nur noch eine ObjectCollection xD aber der gleiche pfard D:
Jetzt geht es nur dateien auf die zugegriffen werden können nciht gelöscht werden
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++
Okay danke mir geht es erstmal darum das überhaupt die dateien gelöscht weren
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());