プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

.NET でディレクトリの削除が失敗したりしなかったりする

小ネタ

Windows 10 Pro 1803、.NET Framework 4.7.2 でうごかしてます

準備

Visual Studioで新規のコンソールアプリを作って

class Program
{
    static void Main(string[] args)
    {
        Directory.Delete(@"F:\Test", true);
    }
}

完成

FドライブはSEAGATE ST2000DM006がそのまま割り当てられていて

Testフォルダ内にはいろんなフォルダやファイルが合計100MBくらいはいっています

実行!

f:id:puni-o:20180608170814j:plain

空じゃないと言われたので見てみました

f:id:puni-o:20180608170852j:plain

このフォルダーは空です。

これ毎回失敗するわけじゃないんですが失敗しないと思い込んでいると私のように痛い目をみます

ということでググりました

でてきました

stackoverflow.com

安定のstackoverflow先生、さすがです

結構前の情報なのでいろんな環境で起きるんですかね?どうなんですかね?

そこにおすすめの解決法もありましたよ

static void Main(string[] args)
{
    try
    {
        Directory.Delete(@"F:\Test", true);
    }
    catch (IOException)
    {
        Thread.Sleep(0);
        Directory.Delete(@"F:\Test", true);
    }
}

ディレクトリの一つ上のディレクトリをとる

ネタにもなれないような小ネタですが

そのものずばりなメソッドが無いかナーとググってみたんですが、バックスラッシュ探して文字列操作ってのが上位に出てきてそういものなのかな?と思って自作

public static string GetParentDirectory(string path)   // pathはファイルでもディレクトリでも可
{
    if (path.EndsWith(Path.DirectorySeparatorChar.ToString())) path = path.Substring(0, path.Length - 1);
    return Path.GetDirectoryName(path);
}

バックスラッシュの決め打ちが気持ち悪いのでPath.DirectorySeparatorChar

一つ上のディレクトリはPath.GetDirectoryNameメソッドで

一行目はpathの最後がセパレーター(バックスラッシュ)の場合にPath.GetDirectoryNameが私の望むものを返してくれないのでそのために入れてます(AppDomain.CurrentDomain.BaseDirectoryなどは最後にセパレーターがついて返ってくるんですよね)

異常値チェックしてないのでその辺は雰囲気で

どーでしょう?

de:code 2018に行ってきた

感想というか後で見る用のメモというかそんなの

セッション


DAY 1

KN01 基調講演

女性が活躍~とかそういうやつなのか平野さん以外全員女性だった。けど性別とか関係なくプレゼンの腕で登壇者を選んでほしかった (女の子がキャッキャウフフしているのを見るのは楽しいけどそういうイベントじゃないでしょ)

英語でしゃべってた3人のプレゼンはすごく安定してうまいと感じた。わざわざ日本に呼んでしゃべってもらうくらいの人だからなのか、私の中で英語補正が入っているのか

AD19 岩永さんのやつ

実を言うと.NET Frameworkはもうだめです。 突然こんなこと言ってごめんね。 でも本当です。

もうしばらくすると.NET Framework 4.8がリリースされます。

それが終わりの合図です。

って話だった気がする

AC14 高橋さんのMRのやつ

AC07 ユニティさんのMRのやつ

AI61 C#ニューラルネットワークを~

今回のde:codeから始まったシアターセッション (休憩中にEXPO会場で15分)

AD14 井上さんの.NETの話

クイズは全問正解できた。WPFのコードネームを覚えていた自分に関心した


DAY 2

AC02 かずきさんのデスクトップアプリの話

これからデスクトップアプリ作るならUWPだよね。サイドローディングが簡単になっているのは知らなかった

1803で増えたタイムラインに対応させる、っていうのは全然頭になかったのでなるほどって感じ (この手の技術について行けていない自分を再認識できた)

AD43 井上さんのVisual Studioの話

この辺は最新を追えている気がした

デモ見れてよかった

AD24 GitHubの人の話

エンタープライズ版なんてのがあるんだね

AC11 Windows MLの話

AD39 .NET CoreでCloud Native API~な話

dockerは必須

AD61 Blazorな話

シアターセッション

使えるけどまだ使っちゃだめよ、って話

使いたい

AC05 荒井さんのやつ

相変わらず見づらい、けど見ちゃう

Level 300なのでそんなに難しいことを言っているわけではなかった気がする (理解できないところが記憶から消されている可能性はある)

AD17 しばやん先生のやつ

ASP.NET Coreな話

冒頭で「シャッター音禁止」を明言してくれたので一度もシャッター音を聞かないで済んだセッション。超快適だった (音だけでなく写真撮る動作もうっとうしいし、全セッション写真禁止でもいいと思った)

話もデモも面白かった。 最終セッションなので1時間くらい延長してもいいのに (

クイズは全問正解できた

感想

アプリに不満はなかった。改善してるなーすごいなーって思った

今回から全席完全入れ替え制になってた。どこかでアナウンスしてたっけ?

twitterにスタッフに対する愚痴が流れたらしいけど、本職ってわけでもないだろうししょーがないとおもう。最後尾の札を持ったスタッフが列の中間くらいにいて多方面からそこに並ぼうとしているのはさすがにどうかと思ったけど

こういうのに参加しないとモチベーションが上がらないので行ってよかった