1

テキストファイルを : に書き出そうとしていますC:\Test folder\output\が、入れずC:\に.

すなわち

これは私が現在持っているもので、現在は機能していますがC:\、最初は.

StreamWriter sw = new StreamWriter(@"C:\Test folder\output\test.txt");

ファイルを出力フォルダーに書き込みたいのですがC:\、前に置く必要はありません。

私は次のことを試しましたが、私のプログラムはただハングします (ファイルを書き出さない):

(@"\\Test folder\output\test.txt");

(@".\Test folder\output\test.txt");

("//Test folder//output//test.txt");

("./Test folder//output//test.txt");

とにかく私はこれを行うことができますか?

ありがとう。

4

4 に答える 4

3

みんな助けてくれてありがとう。

私の同僚も参加して助けてくれましたが、@Kami も大いに助けてくれました。

私が持っているとき、それは今働いています:

string path = string.Concat(Environment.CurrentDirectory, @"\Output\test.txt");

彼が言ったように:「CurrentDirectoryプログラムが実行される場所です。

于 2012-11-12T11:12:02.387 に答える
2

一般的な手法は、次のように、exeのランタイムディレクトリを基準にしてディレクトリを作成することです。たとえば、サブディレクトリを作成します。

string exeRuntimeDirectory = 
    System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().Location);

string subDirectory = 
    System.IO.Path.Combine(exeRuntimeDirectory, "Output");
if (!System.IO.Directory.Exists(subDirectory))
{
    // Output directory does not exist, so create it.
    System.IO.Directory.CreateDirectory(subDirectory);
}

これは、exeがインストールされている場所に関係なく、「出力」サブディレクトリを作成し、そこにファイルを書き込むことができることを意味します。

また、exeファイルとその出力ファイルを1つの場所にまとめ、あちこちに散らばらないという利点もあります。

于 2012-11-12T11:02:34.207 に答える
2

を使用System.IO.Path.GetDirectoryNameして、実行中のアプリケーションのディレクトリを取得し、これに残りのパスを追加できます..

この質問からあなたが何を望んでいるのかはっきりわかりません。

于 2012-11-12T11:03:58.623 に答える
2

指定したフォルダにデータを書き込みたいというご要望を承りました。最初の方法は、コードまたは構成でフォルダーを指定することです。

特定のドライブまたは現在のドライブに書き込む必要がある場合は、次のことができます

string driveLetter = Path.GetPathRoot(Environment.CurrentDirectory);
string path = diveLetter + @"Test folder\output\test.txt";
StreamWriter sw = new StreamWriter(path);

ディレクトリが現在のアプリケーション ディレクトリに対して相対的である必要がある場合、ユーザーAppDomain.CurrentDomain.BaseDirectoryは現在のディレクトリを取得し、その../組み合わせを使用して必要なフォルダに移動します。

于 2012-11-12T10:53:36.420 に答える