2011-06-28 10 views
2

私はC#でDirectory.GetFilesを使用しています。このコードはアセンブリに変換され、T-SQLスクリプトで使用されます。ここで私は信じているコード行が問題です。SQL Serverアセンブリの不正な文字の問題

C#コード:

string[] filePaths = Directory.GetFiles(path, ext, SearchOption.AllDirectories); 

エラー(T-SQLスクリプト):

System.IO.DirectoryNotFoundException:パス 'G:\ Photography \ Archive \ SPBKF3〜L'の一部を見つけることができませんでした。

このエラーの原因となるフォルダはチルダ付きのものだけなので、チルダはWindowsのフォルダ名に使用する正当な文字ではないと仮定しています。ファイルはMacとWindowsシステムで共有されています。過去にファイルとフォルダの名前が問題になっていました。

なぜ、Directory.GetFilesメソッドが存在しないディレクトリを見つけてしまうのかを理解するのが難しいです。 Windowsエクスプローラにフォルダが表示されますが、フォルダにアクセスできません。

問題のフォルダを避けるためにできることはありますか?

答えて

2

~は無効な文字ではありません - 私はちょうどSPBKF3~Lという名前のディレクトリを作成しようとしました。また、そのディレクトリにサンプルコードを実行するためのクイックC#アプリを書きました。

ここに何か他のものがなければなりません - あなたはですが、ディレクトリが存在することを確かめてください。

+0

応答ありがとう、クラゲン。 Windowsエクスプローラで親ディレクトリに移動し、存在しているかのように表示されました。しかし、フォルダにアクセスしようとすると、Windowsはそこにないと私に伝えます。この問題は、パスをコピー&ペーストする場合、またはフォルダをダブルクリックして開く場合に発生します。 – BDawg

2

G:\Photography\Archive\SPBKF3~Lのアクセス許可を確認して、SQL Serverインスタンスが実行されているユーザーアカウントにフォルダが表示されていることを確認してください(パスをエクスプローラウィンドウにコピーして貼り付けてみてください)。

3

SPBKF3〜Lは、8.3短縮ファイル名のように疑わしく見えます。これはどこかで起こっていないと確信していますか?

+0

これは実際にWindowsエクスプローラに表示される方法を知っていますか?私はコマンドプロンプトでこれが起こったことしか見ていない。 – BDawg

+1

ここにディレクトリを作成または削除しているMacから残されたディレクトリアーティファクトかもしれません。あなたが試みることができる1つのことは、fsutilを使って親フォルダの8.3サポートを無効にすることです。 – Moose