2013-07-09 12 views
6

Sto utilizzando Visual Studio 2012 con l'aggiornamento 3 installato. Sto usando C# per il framework .NET 4.5.System.IO.File.Exists() risposta diversa da applicazioni x86 e x64

Ho un metodo che inizia così:

public void Open(System.String filePath) 
{ 
    if (!System.IO.File.Exists(filePath)) 
     throw new FileNotFoundException(. . .); 

    . . . 
} 

Il valore del parametro filePath è questo:

"C:\\Users\\Jonathan.DeCarlo\\Source\\Repos\\PoliticalClassifier\\src\\PoliticalClassifier.DataSource.Tests\\TestFiles\\Social_Economic_DataMicro.xlsx"

Questo percorso effettivamente esiste sulla mia macchina. Questa applicazione è compilata come "Qualsiasi CPU". Lo sto eseguendo su una macchina con Windows 7 x64 installato. Se si lascia che l'applicazione venga eseguito come un processo x64, viene generato il numero FileNotFoundException anche se il file esiste. Se imposto l'esecuzione dell'applicazione come un processo x86, l'eccezione NON viene generata (che dovrebbe essere il caso).

Perché System.IO.File.Exists(filePath) restituisce un risultato diverso quando l'applicazione è in esecuzione come processo x64 rispetto a un processo x86?

+3

Puoi confermare che la stringa filePath è la stessa per entrambi x86 e x64? Il file File viene impostato da variabili di ambiente di qualsiasi tipo? – ClosedEyesSeeing

+3

È possibile riprodurre il problema in una nuova applicazione console che chiama semplicemente 'File.Exists' con lo stesso' filePath'? – keyboardP

+0

@ClosedEyesSeeing - Ho confermato che filePath è lo stesso in entrambi. Inoltre, non ci sono variabili d'ambiente utilizzate per calcolare il percorso. L'ho modificato in un percorso hard-coded per scopi di test. –

risposta

4

Grazie per tutti i commenti. Ho provato alcuni di loro e ho scoperto che non potevo riprodurre il problema per nessun file diverso da quello a cui puntavo con il mio codice originale. Negli ultimi due giorni, ho iniziato a vedere il mio hard disk fallire su di me. Dopo aver ottenuto un nuovo disco rigido, impostato di nuovo tutto e l'esecuzione del programma di cui sopra, non vedo più questo problema. Non posso essere sicuro al 100% di questo, ma assumerò che il file che stavo cercando di aprire sia stato danneggiato da un disco fisso malfunzionante. Mi scuso per l'inseguimento selvaggio dell'oca.

Problemi correlati