9

特定のディレクトリにあるファイルを作成したい。例: C:\x\y\z\aTextFile.txt

この操作では、ファイルを作成するためのディレクトリを作成する必要があります。

Directory.CreateDirectory(@"C:\x\y\z\");
File.Create(@"C:\x\y\z\aTextFile.txt");

しかし、この操作を1行のコードで実行できるのは本当に不思議です。

どんな助けやアイデアも大歓迎です。

4

6 に答える 6

3

シンプル:関数を追加する

void MySingleLineOfCodeFunction(string path, string filename)
{
    Directory.Createdirectory(path);
    File.Create(filename).Dispose();
}

次に、1行のコードを使用します。

MySingleLineOfCodeFunction(@"C:\x\y\z\", "a.txt");

私が言おうとしているのは、コード間に違いはないということです。中にはマイクロソフトの人たちが書いたものもあれば、私たち普通の人たちが書いたものもあります。しかし、コンピューターは違いを生みません。:)

于 2012-06-06T05:50:18.880 に答える
2

残念ながら、やりたいことを実行するコードは 1 行もありません。

なんで?マイクロソフトの組み込み関数で実行したとしても、内部的には 2 つのメソッドが呼び出されるためです。1 つはディレクトリ作成用、もう 1 つはファイル作成用です。

ただし、Petar Ivanovが言ったように、コード行をメソッドにして1行で呼び出すことでコード行を減らすことができます

また

静的拡張メソッドを作成できます。このようにして、インスタンスを作成せずに他の場所で使用できます。(インスタンスが作成される1行を減らしました)。

于 2012-06-06T05:54:43.837 に答える
2

@Petar_Ivanov からの回答を変更して、ファイル パスに基づいて親ディレクトリを計算しました。同様の機能が必要な他のユーザーにとって役立つかもしれないと考えました。

    public void CreateFile(string filePath)
    {
        if (!File.Exists(filePath))
        {
            var parent = Directory.GetParent(filePath);
            Directory.CreateDirectory(parent.FullName);
            File.Create(filePath).Dispose();
        }
    }
于 2013-06-21T13:32:21.257 に答える
2

私の知る限り、.NET フレームワークで同時にディレクトリを作成するファイル作成方法はありません。

「ディレクトリのチェック/作成、次にファイルの作成」というパターンがコード内で何度も繰り返される場合は、メソッドで実装する必要があります。

于 2012-06-06T06:01:41.107 に答える
1

ファイルを作成するには、いいえ、ディレクトリが存在する必要があります。Visual Basic のファイル フレンドリなクラスを使用しても、最初にディレクトリを作成する必要があります。興味深いのは、移動するとフォルダが作成されることです。

CreateFile からhttp://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx

ディレクトリ

アプリケーションは CreateFile を使用してディレクトリを作成できないため、このユース ケースの dwCreationDisposition には OPEN_EXISTING 値のみが有効です。ディレクトリを作成するには、アプリケーションで CreateDirectory または CreateDirectoryEx を呼び出す必要があります。

于 2012-06-06T06:24:02.787 に答える
0

主に私のコードブロックにあります。ファイル作成パーツの直前にフォルダーの存在を処理します。

public void CheckCreatePath(fileName)
{
    string filePath = Directory.GetParent(fileName).ToString();
    if (!Directory.Exists(filePath))
        Directory.CreateDirectory(filePath);
}

そしてただ使う

CheckCreatePath("C:\\TEMP\\TESTPath\\myFile.txt");

あなたのコードブロックで。

于 2015-10-01T12:35:54.380 に答える