1. ホーム
  2. c#

[解決済み】C# - パスに不正な文字がある場合

2022-02-06 19:42:21

質問

C#スクリプトを使用してインポートするExcelファイルのファイルパスを含むデータベーステーブルを持っています。

ファイルパスにスペースが含まれていない限り、スクリプトは正常に動作します。 C:\Temp\My Excel File.xls と表示され Illegal characters in path のエラーメッセージが表示されます。残念ながらソースでファイル名を変更することができません。

ファイルパスが以下のようになるようにハードコーディングすると、正常に動作します。

String Filepath = @"C:\Temp\My Excel File.xls";

これをどのように変更すれば、データベースからのファイルパスを格納する文字列変数を含めることができるようになるのでしょうか。

String Filepath = //Code to get FilePath from database

StringCorrectedFilePath = @+FilePath;

よろしくお願いします。

編集 : この問題は、数字で始まるファイルが無効なエスケープシーケンスを生成するために発生します。 C:\Temp\20160611 My Excel File.xls

編集2 : SOLVED - エラーは、ファイル拡張子の後にキャリッジリターン文字が表示されることが原因でした。解決策については、私の回答を参照してください。

解決するには?

これを行うかどうか

String Filepath = @"C:\Temp\My Excel File.xls";

またはこれ

String Filepath = "C:\\Temp\\My Excel File.xls";

の場合、メモリに保存されている文字列は単に C:\Temp\My Excel File.xls デバッガがどう言おうとも。ですから、どこか(データベース、ファイル、ユーザー入力など)から文字列を読み込むときに、バックスラッシュを "escape"する必要がありません。だから、その文字列を使えばいいのです。