以下のコードを実行すると True が表示されます。
Module Module1 Sub Main() Dim isExist = IO.File.Exists("C:WindowsSystem32driversetchosts") Console.WriteLine("{0}", isExist) End Sub End Module
結果
True 続行するには何かキーを押してください . . .
以下のコードを実行すると False が表示されます。
Module Module1 Sub Main() Dim isExist = IO.File.Exists("C:¥Windows¥System32¥drivers¥etc¥hosts") Console.WriteLine("{0}", isExist) End Sub End Module
結果
False 続行するには何かキーを押してください . . .
見た目は同じコードのように見えますが結果が異なります。
これは ¥ 記号が 前者のコードでは U+005C であるのに対し、後者のコードでは U+00A5 であるためです。フォルダのセパレーターは U+005C である必要があります。
多くの場合、普通に入力していると、上側の正常なコードが書けますが、以下の手順を踏むと ¥ 記号の文字コードが U+005C から U+00A5 に変更されてしまう場合があります。以下その手順。
- Word で Path 文字列 (例: C:WindowsSystem32driversetchosts) を入力する。
- その文書を PDF で保存する。
- 作成した PDF から Path 文字列 (例: C:¥Windows¥System32¥drivers¥etc¥hosts) をコピーする。
- ソースコードにペーストする。
なので、PDF ファイルから Path 文字列をコピーペーストする場合、¥ 記号が U+005C であるか U+00A5 であるかを確認しましょう。
確認方法としては、当該 Path 文字列を Word 等にコピーし、フォントを Arial Unicode MS に変更すると、U+005C は で表示されるためお手軽です。