2013-07-09 18 views
6

Update 3がインストールされたVisual Studio 2012を使用しています。私はC#のターゲット.NETフレームワーク4.5を使用しています。System.IO.File.Exists()x86およびx64アプリケーションと異なる回答

私はこのように起動する方法があります:パスは確かに私のマシン上に存在しない

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

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

    . . . 
} 

filePathパラメータの値は、このです。このアプリケーションは「Any CPU」としてコンパイルされています。 Windows 7 x64がインストールされたマシンで実行しています。アプリケーションをx64プロセスとして実行させると、ファイルが存在してもFileNotFoundExceptionがスローされます。アプリケーションを強制的にx86プロセスとして実行すると、例外はスローされません(この場合は例外です)。

System.IO.File.Exists(filePath)は、アプリケーションがx86プロセスではなくx64プロセスとして実行されているときに、別の結果を返すのはなぜですか?

+3

filePath文字列がx86とx64の両方で同じであることを確認できますか? filePathは環境変数で設定されていますか? – ClosedEyesSeeing

+3

同じ 'filePath'で単に' File.Exists'を呼び出す新しいコンソールアプリケーションで問題を再現できますか? – keyboardP

+0

@ClosedEyesSeeing - 私はfilePathが両方で同じであることを確認しました。また、パスを把握するための環境変数はありません。テスト目的のためにハードコードされたパスに変更しました。 –

答えて

4

ありがとうございました。私はそれらの数を試して、私は私の元のコードで指摘した以外のファイルの問題を再現できないことがわかった。最後の数日間、私は私のハードドライブが私に失敗するのを見始めた。新しいハードドライブを入手して、もう一度設定して、上記のプログラムを実行した後、私はもはやこの問題を見ることはできません。私はこれについて100%確信することはできませんが、私がオープンしようとしていたファイルが、故障したハードドライブによって破損していると仮定します。私は野生のガチョウの追跡をお詫び申し上げます。

関連する問題