0

私はプロジェクトに取り組んでおり、私がやろうとしているのは、自分のフォルダー内のファイルを削除することです。

しかし、私はエラーが発生します:

Could not find part of the path.

問題は、パスの一部を構成する ' がパスに含まれていることです。これが私のコードです:

foreach (var a in attachments)
{
    string[] files = System.IO.Directory.GetFiles(Server.MapPath("~/Files/'"+ a.FileName +"'"));

    foreach (string pathfile in files)
    {
        System.IO.File.Delete(pathfile);
    }
}

結果のパスは次のとおりです。

'c:.....\Files\'14d75c4e-c25f-4288-9a75-08a359fe6d844.png'"

どうすればこれを解決できますか?

4

3 に答える 3

3

一重引用符は必要ありません。

string[] files = System.IO.Directory.GetFiles(Server.MapPath("~/Files/"+ a.FileName));
于 2013-09-30T11:47:26.097 に答える
2

これは、コードに余分な (不要な) 一重引用符があるためです。

....MapPath("~/Files/'"+ a.FileName +"'"));

この行を変更します。

string[] files = System.IO.Directory.GetFiles(Server.MapPath("~/Files/'"+ a.FileName +"'"));

string[] files = System.IO.Directory.GetFiles(Server.MapPath(string.Format("~/Files/{0}", a.FileName));

コード スニペットの最後の変更に注目してください。

また、私が提案できれば、これを a でラップしますTry / Catch(これは将来のデバッグにも役立ちます)。

お役に立てれば。

于 2013-09-30T12:51:27.563 に答える
0

最後に私はそれを解決しました。

問題はパスであり、私が行ったことは以前とほとんど変わりませんでした。

ルートパスを返すメソッドを作成しました。そして、単純な変数を追加して、削除コマンドを実行しました。

これが私のコードです:

方法:

private string StorageRoot
   {
    get { return Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/Files/")); }
   }

削除コマンド:

 foreach (var a in attachments)
    {
      var myfilename = a.FileName;
      var filetoDelete = StorageRoot + myfilename;
      System.IO.File.Delete(filetoDelete);
    }

このソリューションが将来誰かに役立つことを願っています。

于 2013-09-30T14:47:55.477 に答える