2017-09-26 26 views
-3

私は自分の状況に関連するスタックオーバーフローに関する質問を確認しました。 基本的な質問には答えません。 私のアプリケーションでは、ユーザーは完全修飾パスを入力できます。このパスはファイルへのパスでなければなりません。ファイルはまだ存在できません(バックアップを保存しています)。 getattributesアプローチを使用すると、ファイルが見つからないのでtry/catchのcatchをトリップします。 (それではないはずです)。私は、ユーザーが単にディレクトリへのパスを入力した場合、そしてそのパスがファイルが存在しないファイルへのものであるかどうかを確認する必要があります。どちらの場合も、ユーザーにフィードバックを伝える必要があります。私は4.5.2の.NETフレームワークでC#を使用しています。は、ファイルが存在するかどうかを判断します。ファイルが存在しない場合は、

ありがとうございます。

+0

「try/catchのキャッチをトリップ」 - それはどういう意味ですか?それは新しい機能ですか?まず、完全なパスが存在しないことを確認し、最後のパスセグメントを削除し、それが既存のディレクトリであることを確認するだけです。ファイルが存在するかどうか調べることはできますか?ディレクトリが存在するかどうか調べることはできますか?文字列からパスセグメントを削除できますか?これらはすべて些細なことです。 –

+2

指定された入力がディレクトリ、ファイル、または存在しないかどうかを判断するためのリンクは次のとおりです。 https://msdn.microsoft.com/en-us/library/system.io.directory.exists(v=vs。 110).aspx –

+6

'File.Exists'と' Directory.Exists'メソッドはあなたを助けませんでしたか? – dcg

答えて

0

これを試して、これがあなたが探しているものかどうか確認できますか?私はあなたが完全修飾パスを入力すると述べたように、ユーザーがファイルの拡張子を入力すると仮定しています。

static void Main(string[] args) 
    { 
     Console.WriteLine("Enter fully qualified path of the file to be accessed."); 
     var eneteredPath = Console.ReadLine(); 
     var isItFile = Path.HasExtension(eneteredPath); 
     if (isItFile) 
     { 
      Console.WriteLine($"Specified File exists = {File.Exists(eneteredPath)}"); 
     } 
     else if(Directory.Exists(eneteredPath)) 
     { 
      Console.WriteLine($"Specified path is to a directory."); 
     } 
    } 
0

だから私はtxtInputと簡単なフォーム、およびボタンがあります。

using System.IO; 

private void cmdCheck_Click(object sender, EventArgs e) 
    { 
     if (Directory.Exists(txtInput.Text)) 
     { 
      // This is a directory, not a file. 
     } 
     else 
     { 
      try 
      { 
       if (File.Exists(txtInput.Text)) 
       { 
        var fileInfo = new FileInfo(txtInput.Text); 

        // File exists and now we have the information. Alert the user. 
       } 
       else 
       { 
        // File doesn't exist. Do things. 
       } 
      } 
      catch (Exception ex) 
      { 
       Trace.WriteLine(ex.Message, "ERROR"); 
      } 
     } 
    } 

んこの訴訟要件を?

+0

blaze_125は拡張子を必要としないファイルについて良い点を持ち出しました。 – Ratatoskr

2

ファイルが有効なファイルであるためにファイル拡張子を持つことは必須ではありません。したがって、ファイル拡張子を持つパスを使用してファイルと呼ぶことはできません。

using System; 

namespace FileFolder_46434099 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string incomingpath = @"C:\temp\3075"; 
      if (System.IO.Directory.Exists(incomingpath)) 
      { 
       Console.WriteLine("path is a directory"); 
      } 
      else if (System.IO.File.Exists(incomingpath)) 
      { 
       Console.WriteLine("path is of a file"); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

この例では... C:\temp\3075は実際にはファイルであり、プログラムはそれをそのまま返します。

0

これは役に立ちますhttps://www.dotnetperls.com/path

パス。この道はどこかにつながります。それは木々と建物の間を行き来する。雲が動く。太陽光が地面に到達し、私たちの方向は明確です。 .NET FrameworkのクラスであるPathには、組み込みメソッドがあります。このクラスは、ファイルパスを扱うときに役立ちます。これはSystem.IOの一部です。

関連する問題