A certain engineer "COMPLEX"

.NETでLinuxと遊んでみる Visual Studio Code編 第3回

Introduction


前回は、デバッグ時に引数を指定して実行してみました。

今回はファイルパスを使ったAPIのメモです。

System.IO.DirectoryInfo


相対パス扱いなの?

前回、デバッグ引数として、~/を指定しました。
Linuxにおいてこのパスは、実行ユーザのホームディレクトリを示します。
(~も同様。)

これを使って、下記のコードを実行します。

よくある、指定したパスの配下のファイルを列挙するプログラムです。

これを実行すると下記の例外を投げます。

Could not find a part of the path '/home/XXXXXX/git/Demo/DotNetCoreLinux3/~/'という記述から、指定したパスは、カレントディレクトリからの相対パス扱いになってしまいました。
なので、System.IO.Path.GetFullPathメソッドで絶対パスに変換してみます。

変わらず同じ例外が出力されます。
デバッグコンソールの出力は下記のようになります。

なので、~はダメな模様。

ルートから指定してみる

Windowsでも、パス指定の際の基準はカレントディレクトリになりました。
でも、フルパスを指定したなら、それはフルパスとして解釈されます。
間違っても、<カレントディレクトリ>\<フルパス>みたいな解釈はされません。

Linuxでもそうなるでしょうか?
Linuxにおけるルートは/になります。

次は、デバッグ引数に/を指定して、実行してみます。
無事に最後まで実行できています。
また、/はGetFullPathでも/として認識されています。

きちんとルートディレクトリの内容と比較してみます。
同じ内容であることがわかります。

Conclusion


少しずつ基本的なAPIを使えるようになってきました。
Windows/Mac/Linuxでの挙動の違いを比較してみたいですね。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。