例外:「URI形式はサポートされていません」


89

dirを指す絶対ローカルパスがあります: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"

しかし、それをDirectoryInfoのctorにスローしようとすると、「URI形式はサポートされていません」という例外が発生します。

私はグーグルでSOを調べましたが、ローカルパスではなく、リモートパスを使用したソリューションしか表示されません。なんらかの変換方法を期待しています...

回答:


189
string uriPath =
    "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj";
string localPath = new Uri(uriPath).LocalPath;

3
いいね!私はこれとまったく同じ問題を抱えていて、グーグルは狂ったようでした、これはうまくいきました。
ジェレミーモーガン

それはofcで機能するソリューションですが、失敗するケースは1つだけです。場所に#が含まれている場合、ローカルパスはその位置までしか移動しません。たとえば、パスがfile:/// C:/foo/bar#/test.jpgの場合、実際に必要なものではなく、C:/ foo / barを取得します。
dokutoMekki 2015年

2
こんにちは。ファイルをwww.xxx.com/sitemap.xmlに配置したいと思います。これはローカルホストで機能していますが、サーバーにはそのようなディレクトリはありません。その場合、どのように物事を分類できますか?
それはトラップです

@ It'satrapおそらくあなたはServer.MapPathを探しています
アンドリューモートン

しかし、あなたのパスを使用した後、私は内部にさらにフォルダを作成していますが、ディレクトリは作成されていません。ルック持っstackoverflow.com/questions/63493899/...
HUD

1

これを試して

ImagePath = "http://localhost/profilepics/abc.png";
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream receiveStream = response.GetResponseStream();


0
     string ImagePath = "";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ImagePath);
        string a = "";
        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            Stream receiveStream = response.GetResponseStream();
            if (receiveStream.CanRead)
            { a = "OK"; }
        }

        catch { }

1
このコードは問題を解決する方法と理由の説明含めて質問を解決するかもしれませんが、投稿の品質を向上させるのに本当に役立ち、おそらくより多くの賛成票をもたらすでしょう。あなたは今尋ねている人だけでなく、将来読者のために質問に答えていることを忘れないでください。回答を編集して説明を追加し、適用される制限と前提条件を示してください。
Artog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.