このエントリを書いたときには完全にボケていた。 事実誤認に基づく曲解が含まれておりデタラメなので撤回する。 自分への戒めとしてこのまま晒しておくが、内容はダメのダメダメなので読まないで下さい(爆) 久しぶりに(年甲斐もなく)ちょっと小さなツールを作っていた。 ディレクトリを指定して、子どものディレクトリを全部ナメて、jpegファイルを探して、EXIFが付いていたらその撮影日を取得してファイル名をリネームし…みたいな、ありがちなものなのだが。 (1) C#のコマンドライン引数の解釈、ヘンじゃないか? 特になにも考えずに Main(string[] args) で、args[0]、args[1]と取ろうとしたら、値が期待とずれている。 foo "C:\Program files\" "c:\bar baz\dammy.log" とやった場合、第一パラメータ "C:\Program files\" は C:\Program と files" と解釈されるようだ。 ようするに、2個目の\がリテラルのエスケープと解釈されてるわけだが、これって前(Win32)からそうだったけ? ちなみにEnvironment.GetCommandLineArgsを通しても同じ解釈である。 まあ、 foo "C:\Program files" "c:\bar baz\dammy.log" にすりゃ良いといえば良いのだが、なんか違和感を感じるんだよなぁ。 (2) System.IO.PathTooLongException もうひとつ、こっちはちょっと俺的には致命的。 System.IO.FileやDirectoryでは、例えばFileInfoなどでSystem.IO.PathTooLongExceptionつー例外があって、これ見逃してたのだが、いわゆるLong UNCつーの? MAX_PATHの制限があいかわらず260バイトなんだな。 これは困った。 深いディレクトリ(作れてるんだからOSは一応サポートしてるはず。エクスプローラとかでも操作はできないが)が.NETからだと読めない書けない (つーか実現する手段が思い浮ばない)。 System.IO.FileやDirectoryはstaticなのでInheritもできないし、けっきょくWin32のお世話にならなきゃいけないの? …Win32のラッパ作るほど暇ではないので、.NETにはお引き取り願った今日この頃です(爆)
by signal-9
| 2012-06-25 17:52
| TIPSとかKludgeとか
|
カテゴリ
全体 一般の話題 奇妙な論理 奇談・異聞 秋葉原 研究(笑) 町歩き 古い話 東電災害 電算機関係の話題 情報保護・セキュリティ 読んだり見たり TIPSとかKludgeとか 拙作ソフトウェア 未分類 最新の記事
記事ランキング
以前の記事
最新のトラックバック
その他のジャンル
ブログジャンル
画像一覧
| ||||||||||||||||||||
ファン申請 |
||