106

C#プロジェクト(Windowsコンソールアプリケーション)があります。プロジェクト内にDataという名前のフォルダーを作成しました。Dataフォルダー内に2つのテキストファイルがあります。

「データ」フォルダからテキストファイルを読み取るにはどうすればよいですか。以下のことを試してみました。

string[] files = File.ReadAllLines(@"Data\Names.txt")

ファイルが見つからないのは解凍エラーです。

以前に投稿されたStackoverflowの回答をいくつか確認しましたが、どれも機能していません。

どうすれば続行できますか?ありがとう!

4

9 に答える 9

156

以下のコードが機能するはずです:

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Data\Names.txt");
string[] files = File.ReadAllLines(path);
于 2012-12-07T11:46:14.683 に答える
36

データフォルダがどこにあるかによります

.exeファイルがあるディレクトリを取得するには:

AppDomain.CurrentDomain.BaseDirectory

現在のディレクトリを取得するには:

Environment.CurrentDirectory

次に、ディレクトリパスを連結できます(@"\Data\Names.txt"

于 2012-12-07T11:46:06.257 に答える
21

'Data'という名前のフォルダーにあるすべてのファイルを取得する必要がある場合は、次のようにコーディングしてください。

string[] Documents = System.IO.Directory.GetFiles("../../Data/");

これで、「ドキュメント」は、「データ」フォルダ「データ」内の2つのテキストファイルの完全なオブジェクト名の配列で構成されます。

于 2012-12-07T12:46:09.433 に答える
17

C#プロジェクト(Windowsコンソールアプリケーション)があります。プロジェクト内にImagesという名前のフォルダーを作成しました。MyIcon.icoというicoファイルが1つあります。以下のようにImagesフォルダ内のMyIcon.icoにアクセスしました。

this.Icon = new Icon(@"../../Images/MyIcon.ico");
于 2015-07-20T21:49:13.060 に答える
10

[常に出力ディレクトリにコピー]が設定されている場合は、次の手順を試してください。

 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
 String Root = Directory.GetCurrentDirectory();
于 2012-12-09T16:37:49.073 に答える
1

Xamarin.iOSの場合、ファイルが存在する場合は、次のコードを使用してファイルのコンテンツを取得できます。

var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, "xyz.json");
if (File.Exists(filename))
{
var text =System.IO.File.ReadAllText(filename);
}
于 2018-08-08T15:01:42.250 に答える
-1

このコードを使用して、フォルダーおよびサブフォルダー内のすべてのファイルも読み取ります

class Program
{
    static void Main(string[] args)
    {

        getfiles get = new getfiles();
        List<string> files =  get.GetAllFiles(@"D:\Document");

        foreach(string f in files)
        {
            Console.WriteLine(f);
        }


        Console.Read();
    }


}

class getfiles
{
    public List<string> GetAllFiles(string sDirt)
    {
        List<string> files = new List<string>();

        try
        {
            foreach (string file in Directory.GetFiles(sDirt))
            {
                files.Add(file);
            }
            foreach (string fl in Directory.GetDirectories(sDirt))
            {
                files.AddRange(GetAllFiles(fl));
            }
        }
        catch (Exception ex)
        {

            Console.WriteLine(ex.Message);
        }



        return files;
    }
}
于 2015-11-30T06:24:02.653 に答える
-1
string myFile= File.ReadAllLines(Application.StartupPath.ToString() + @"..\..\..\Data\myTxtFile.txt")
于 2019-01-16T22:02:16.160 に答える
-1

あなたが使用する場合、これは私にとって役に立ちました

var dir = Directory.GetCurrentDirectory()

パスの塗りつぶしが現在のフォルダを超えている場合、このパスが含まれます\ bin \ debug私がお勧めするのは、

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

次に、dir値を出力し、パスが提供していることを確認します

于 2020-01-10T21:36:59.063 に答える