|
■No69713 (あいうー さん) に返信 > わからない点は、ファイル名自分で入力可能にする点
ファイル名……ですか?
最初の質問に、「フォルダ作成」の話はありましたが、 「ファイル」の話は無かったと思います。
一つのフォルダーの中に、複数の連番ファイルを配置したいということでしょうか? それとも、(ファイル名ではなく)フォルダー名のことでしょうか?
> var name = Console .ReadLine(); 入力はそれで良いと思いますよ。 実行したら、画面に適当な名前を入れて Enter キーを押せば、 変数 name に、その文字列がセットされます。
あとはそれを、フォルダーの名前なり、ファイルの名前なりとして 利用すれば良いことになります。
たとえば、現在の場所にフォルダーを一つ作るならこんな感じです。
class Program { static void Main() { var name = Console.ReadLine(); System.IO.Directory.CreateDirectory(name); } }
※先ほどの回答では、 Directory.Create と回答してしまいましたが、 正しくは上記のとおり、Directory.CreateDirectory です。失礼しました。
上記を実行して、たとえば「TEST」と入力して Enter キーを押すと、 現在の場所(特に指定しなければ EXE のある位置)に、TEST フォルダーが生成されます。
もし、TEST1、TEST2、TEST3 と続けて作成したいのであれば、 System.IO.Directory.CreateDirectory(name + "1"); System.IO.Directory.CreateDirectory(name + "2"); System.IO.Directory.CreateDirectory(name + "3"); のように、「+ 演算子」で文字列連結すれば OK です。
上記では 3 個固定のコードで書いていますが、作成される数を 変更できるようにしたいのであれば、ループ処理を用いましょう。
var name = Console.ReadLine(); for (int i = 1; i <= 9; i++) { System.IO.Directory.CreateDirectory(name + i); }
たとえば上記では、1〜9 まで 9 個のファイルが作成されます。 「1」や「9」と書かれている部分を別の値にして、動作を確認してみてください。 最終的には、その個数もユーザーに入力させるようにすると良いでしょう。
> これをどうやったらファイル名にすることができるのか、 上記のように、+ 演算子で文字列連結することができます。
別のディレクトリーに配置したいような場合には、 System.IO.Path.Combine メソッドで、パスを連結しても良いでしょう。
// 既に存在しているフォルダー名を用意 var baseFolder = @"C:\あいう";
// その下に、変数nameで指定された名前を連結 var newPath = System.IO.Path.Combine(baseFolder, name);
// フォルダーを作成 System.IO.Directory.CreateDirectory(name);
たとえば上記の場合、name に「SAMPLE」という文字列が渡されていれば、 newPath には「C:\あいう\SAMPLE」という文字列がセットされ、 その結果、「C:\あいう」の下に「SAMPLE」フォルダーが作成されることになります。
> そして、ファイルを連番のように フォルダーではなく、あくまでもファイルということであれば、 とりあえず 0 バイトのファイルを作成するために、 System.IO.File.WriteAllText(fileName, null); のようなコードを利用できます。 変数fileNameにはファイルの名前またはフルパスを指定してください。
> 連番数を入力指定するには 今回紹介した「for (int i = 1; i <= 9; i++)」という構文の 「9」の数字を指定させるのであれば、たとえば
var count = Convert.ToInt32(Console.ReadLine()); for (int i = 1; i <= count; i++) {
などのように書けます。 (実行する時には、数値以外を入力してしまわないように注意してくださいね)
|