2011-09-12 19 views
65

Devo controllare se esiste un file xml nella cartella.Come verificare se un file esiste in una cartella?

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory); 
FileInfo[] TXTFiles = di.GetFiles("*.xml"); 
if (TXTFiles.Length == 0) 
{ 
    log.Info("no files present") 
} 

È in questo modo il migliore per controllare esiste un file nella cartella.

ho bisogno di controllare solo un file XML è presente

+2

Siete alla ricerca di tutti i file XML o quello con un nome specifico? –

+0

possibile duplicato di [Come verificare rapidamente se la cartella è vuota (.NET)?] (Http://stackoverflow.com/questions/755574/how-to-quickly-check-if-folder-is-empty-net) –

+5

Ciò di cui hai bisogno è semplicemente 'Directory.EnumerateFileSystemEntries (ProcessingDirectory," * .xml "). Any()' e questo è il più veloce che puoi ottenere. –

risposta

118

Questo è un modo per vedere se un file XML-esiste in quella cartella, sì.

Per verificare la presenza di file specifici, utilizzare File.Exists(path), che restituirà un valore booleano indicante che il file allo path esiste.

+3

È anche possibile utilizzare la proprietà FileInfo.Exists – VMAtm

+7

Noe che questa risposta restituisca false se l'utente non dispone dell'autorizzazione per leggere il file. Quindi fa più che controllare se il file esiste in una cartella. Potresti voler usare DirectoryInfo.GetFiles() ed enumerare il risultato. – ogborstad

26

Uso FileInfo.Exists Proprietà:

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory); 
FileInfo[] TXTFiles = di.GetFiles("*.xml"); 
if (TXTFiles.Length == 0) 
{ 
    log.Info("no files present") 
} 
foreach (var fi in TXTFiles) 
    log.Info(fi.Exists); 

o File.Exists Metodo:

string curFile = @"c:\temp\test.txt"; 
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist."); 
+4

Le classi DirectoryInfo e FileInfo sono fantastiche. Offrono molti metodi per gestire questi costrutti del file system, esporre informazioni in proprietà utili quando si collegano all'interfaccia utente e sono serializzabili, quindi è possibile utilizzarli nelle configurazioni. – Will

+0

Qualche motivo per downvote? – VMAtm

20

Per controllare file esiste o non è possibile utilizzare

System.IO.File.Exists(path) 
7

In questo modo siamo in grado di verificare la presenza di uno già esistente file in una cartella particolare:

string curFile = @"c:\temp\test.txt"; //Your path 
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist."); 
5

Dal momento che nessuno ha detto come verificare se il file esiste e ottenere la cartella corrente il file eseguibile è in (Directory di lavoro):

if (File.Exists(Directory.GetCurrentDirectory() + @"\YourFile.txt")) { 
       //do stuff 
} 

Il @"\YourFile.txt" non è case sensitive, questo significa che cose del genere @"\YoUrFiLe.txt" e @"\YourFile.TXT" o @"\yOuRfILE.tXt" vengono interpretati allo stesso modo.

2

Può essere migliorato in questo modo:

if(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count == 0) 
    log.Info("no files present") 

alternativa:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present"); 
-9
String^ fileName = "C:\\Cal_Connect\\" + (this->cbo_Model_Name->Text) + "\\" + (this->txt_Certificate_No->Text) + "\\CUSTOMER RECORD\\" + "Status" + ".txt"; // สร้าง file CUSTOMER RECORD 
    if (!System::IO::File::Exists(fileName)) /* ถ้าไม่มี file จะสร้าง file ใหม่ (ถ้ามีจะไม่สร้าง file) */  
+4

Questo è stato già risposto, cinque anni fa (con una risposta molto elevata, accettata). E quello che hai scritto sembra C++, non C#. –

0

Questo mi ha aiutato:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false); 
Problemi correlati