20

私は C# の初心者で、ファイルを読み取るフォルダーがあります。

ソリューション ファイルの親フォルダーにあるファイルを読み取りたい。どうすればいいですか?

string path = "";
StreamReader sr = new StreamReader(path);

したがって、私のファイルXXX.slnが にある場合は、 のファイルC:\X0\A\XXX\を読み取ります。.txtC:\X0\A\

4

6 に答える 6

25

これを試して:

string startupPath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName,"abc.txt");

// Read the file as one string. 
string text = System.IO.File.ReadAllText(startupPath);
于 2013-09-25T10:02:15.930 に答える
8

アプリケーションが、ファイル パスとソリューション パスの関係に基づいてファイルの場所に依存しているとしたら、それは怠慢だと思います。プログラムは で実行されている可能性がありますがSolution/Project/Bin/$(ConfigurationName)/$(TargetFileName)、それは Visual Studio の範囲内から実行している場合にのみ機能します。Visual Studio 以外の他のシナリオでは、これは必ずしも当てはまりません。

2 つのオプションが表示されます。

  1. プロジェクトの一部としてファイルを含め、そのプロパティで、出力フォルダーにコピーします。その後、次のようにしてファイルにアクセスできます。

    string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Yourfile.txt");
    

    展開中に、このファイルが実行可能ファイルと一緒に展開されていることを確認する必要があることに注意してください。

  2. コマンド ライン引数を使用して、起動時にファイルへの絶対パスを指定します。これは、Visual Studio 内でデフォルト設定できます (「プロジェクト プロパティ -> デバッグ タブ -> コマンド ライン引数」を参照してください。例:

    filePath="C:\myDevFolder\myFile.txt"
    

    コマンド ラインの解析に関する方法とライブラリは多数あります。これは、コマンドライン引数の解析に関するスタック オーバーフローの回答です。

于 2013-09-25T09:49:48.183 に答える
3

これがあなたの望むものだと思います。ただし、公開するときにそれが良いアイデアかどうかはわかりません:

string dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName;

必要using System.IO;

于 2013-09-25T09:55:15.953 に答える
2
string path = Application.StartupPath;
于 2013-09-25T09:49:55.153 に答える