2

いくつかのディレクトリに移動してから、入力フォルダーに移動しようとしています...

私はこれを試しました

var path = Path.Combine(Directory.GetCurrentDirectory(), @"..\\..\\..\\Input\\" + filename);

しかし、パスの値は..

C:\\Users\user1\\Desktop\\ToSend\\test\\reverser\\Reverser\\bin\\Debug\\..\\\\..\\\\..\\\\Input\\\\limerick.txt

何か案は?

4

5 に答える 5

2

相対パスではなく絶対パスを取得する必要があります。したがって、 Combine( )の代わりにGetFullPath()を使用する必要があります。

これをチェック

于 2014-08-20T07:29:21.157 に答える
0

パスから削除するレベルの数がわかっていると仮定します。

public string DirectoryGOUp(string path, int levelCount) {
    if(string.IsNullOrEmpty(path) || levelCount < 1)
        return path;

    string upperLevel = System.IO.Path.GetDirectoryName(path);

    if(--levelCount > 0)
        return DirectoryGOUp(upperLevel, levelCount);

    return upperLevel;
}

そして、それを呼び出します:

var newPath = DirectoryGOUp(Directory.GetCurrentDirectory(),3); newPath = Path.Combine(newPath, @"Input\"+filename);

于 2014-08-20T07:33:23.890 に答える
0

DirectoryInfo.Parentプロパティを使用できます。

于 2014-08-20T07:26:31.237 に答える
0

まず、文字列で @ を使用する場合、\ 文字をエスケープする必要がないため、単一の \ スラッシュを使用するだけで、結果で二重にエスケープされたスラッシュを回避できます。

パスの質問について:何をしたいかによります。結果の文字列が / を使用してファイル操作を実行したり、 / を使用してファイルSystem.IO.File.*の書き込み/読み取りを行ったりするために使用される場合、操作自体が を検出するときにディレクトリをたどって処理するので、心配する必要はありません!StreamReaderStreamWriter\..\

于 2014-08-20T07:28:05.740 に答える