2012-05-22 19 views
14

Come posso ottenere il percorso file di un file nel mio progetto?Ottieni il percorso file di un file nel progetto corrente

string fileContent = File.ReadAllText(LocalConstants.EMAIL_PATH); 

EMAIL_PATH Ho aggiunto al mio progetto come un file di testo. Questa riga di codice genera un'eccezione perché per impostazione predefinita sta cercando nella cartella system32 per qualche motivo. Ho bisogno di impostarlo nella directory dei progetti.

+0

Avete bisogno directory dell'applicazione? –

+0

Aggiungo un file di testo al mio progetto. Ho bisogno di quella directory –

+0

La directory root dei progetti è ciò di cui ho bisogno –

risposta

25

Si potrebbe utilizzare Path.Combine e AppDomain.CurrentDomain.BaseDirectory:

string fileName = "SampleFile.txt"; 
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalConstants.EMAIL_PATH, fileName); 

ritorna in un progetto di test in modalità debug questo percorso (quando LocalConstants.EMAIL_PATH="Emails"):

C:\****\****\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsFormsApplication1\bin\Debug\Emails\SampleFile.txt 
+0

Questo codice punta alla cartella bin/debug. EMAIL_PATH si trova nella cartella radice del progetto –

+0

Forse il mio problema è che devo impostare i file di testo da copiare in output. È la cosa standard da fare? –

+1

@NickLaMarca: ti stai riferendo a http://stackoverflow.com/a/857473/284240? Forse, dipende dal tuo esatto requisito. –

1

È possibile utilizzare Environment.CurrentDirectory

See: http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

Per ulteriori informazioni.

modificare *

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

farà lo stesso ed è forse un po 'più sicuro.

+0

Che punta alla cartella system32 di Windows –

+0

Indica dove si trova la directory di lavoro. Ho appena eseguito una demo su un'app per console di test e l'output era: "c: \ users \ duane \ documents \ visual studio 2010 \ Projects \ EnvironmentDemo \ EnvironmentDemo \ bin \ Debug", potresti pubblicare la stringa che ottieni da questa proprietà ? – dtsg

+1

La directory corrente non è sempre la directory della vostra applicazione. Se si tratta di un file di supporto, non è sicuro assumerlo. –

0

questo ha funzionato per me System.AppDomain.CurrentDomain.BaseDirectory.ToString()

Problemi correlati