2016-11-26 3 views
0

を返し、そのデータベースへのパスは、このです:C#File.existsが、私は、データベースを開くプログラムを持っている偽

private static string strDefaultDB2 = @"C:\Users\" + Environment.UserName + @"\OneDrive\TIME FILE\MyName\TimeFile.accdb"; 

私はこの1つを試してみましたすべてのコンピュータが1以外罰金それにアクセスすることができました、それまた、OneDriveへのアクセス権を持っているが、私はファイルが存在しないコードを実行したときに、私はこのようなものであるコードによって生成されたパスを入力すると...:エクスプローラで

C:\Users\UserName\OneDrive\TIME FILE\MyName\TimeFile.accdb 

を、それがデータベースを開きます直ちに。私はまた、管理者としてそれを実行してみました...それはこの1台のマシン上のデータベースを見つけることができない理由はわからないが、それは何も

を変更していないこれが実行されるコードです:

if (!System.IO.File.Exists(doesFileExist)) 
      { 

       Polaris.Polaris.log("The Path " + doesFileExist + " Does Not Exist!"); 

       runWindowDB(); 


      } 

私はそれが例外をスローしたファイルに名前の変更をしようとする場合:

「[パス]ファイルが見つかりませんでした」そして、私は、データベースをオープンしようとした場合:「[パス]は有効なパスではありません」

このパスにはすべてのPCに空白があり、唯一変更されているのはユーザー名。エクスプローラがファイルを開き、パスが正しいことを確認します。

アイデア?

おかげ

+3

あなたはどんな例外とinnerexceptionを得ていますか?ユーザの名前が変更され、ユーザ名がフォルダ名と同じではないのですか?プログラムを実行しているユーザーにファイルを開く権限がありますか?どのようなコードが正確に投げていますか?パスに文字列をどのように作成するのか、それをどのように開くのか、投稿するのか、正確な例外を投稿するのか(そのすべて、完全なメッセージ、例外のタイプなど)を表示するだけです。 –

+0

ファイルに「隠された」属性がある可能性はありますか? –

+0

パスを使用する必要があります。パスに空白がある場合は結合します。 – chris579

答えて

0

あなたが例外を得るのですか?このファイルを読み書きできますか? 文字列に空白がありますが、それはとにかく良いとは思いません。

公式ドキュメントlinkから:

パスがディレクトリを記述した場合、このメソッドはfalseを返します。末尾の は、 ファイルが存在するかどうかを判断する前に、パスパラメーターからスペースが削除されます。

に指定したファイルが存在するかどうかを判断しようとしているときにエラーが発生すると、Existsメソッドはfalseを返します。これは、 文字またはあまりにも多くの文字を含むファイル名、失敗したディスクまたは不足しているディスクを渡す、または 呼び出し元にファイルを読み取る権限がないなどの例外が発生する状況で発生する可能性があります( )。

+0

空白** 1996年に導入されたFAT32以降、パス内の**は問題になりません。 – rene

0

ハードコード他のユーザーのユーザー名はこのマシンから試してみてください。文字列に無効な文字が含まれているか、パスがフォルダであると判断された場合、msdnはfalseを返します。いくつかの奇妙なエンコードが進行中であるか、ウイルススキャナがioを傍受しています。それが失敗した場合、動作する別のボックスにログオンするようにユーザーを取得してください。そのファイルが認識されると、そのユーザーの元のボックスの環境である必要があります。

関連する問題