|
■No95900 (銀だこは邪道 さん) に返信 > 説明べたで申し訳ないです。コードも一部しか乗せていなかったのも問題でした。 > フォルダの作成は初めのコードの上に書いてあり、ファイルの保存方法だけ知りたかったので乗せませんでした。 > 実際のコードを載せます。質問時に書いたコードは忘れてください。 > > 説明が下手なので改めてして欲しい動作を書きます。 > ボタンを押す⇒その日のフォルダが出来る⇒その中にファイルを保存する > ファルダは一日1個。ファイルは複数保存します。 > ボタンを押すと、SaveFile()を呼び出すということでいいでしょうか?
> 下のコードでも動作はしますがコードのセンスがないのでもっとシンプルにしたコードを教えてください。 >
> public void SaveFile() > { > string folderName = DateTime.Today.ToString("yyyyMMdd", CultureInfo.CurrentCulture); > string path = Path.Combine(@"パス", folderName);
// ディレクトリ作成部分は本題ではないのでカット
> string filePath = @"pathと同じパス"; > string[] subFolders = Directory.GetDirectories(filePath, "*", SearchOption.AllDirectories); > string max = subFolders.Max();
// 以後のファイル作成部分も本題ではないのでカット
と、実コードの問題と思われているであろう箇所を抜粋してみました。
求めたい max は、path と同じパスですか?それとも、path のサブディレクトリですか?
より具体的には、 filePath の内容は、 filePath = path; なのかそれとも filePath = @"パス"; なのかで、状況が変わります。
filePath == @"パス"; であれば、求める max は、path と同じになります。
テストコードを用意してどういう値になっているかを確認してみるとよいと思います。 テストコードはコンソールアプリを作成し main の中身を以下のコードにします。 (@"パス" とか @"pathと同じパス" とかは、本物に直す)
string folderName = DateTime.Today.ToString("yyyyMMdd", CultureInfo.CurrentCulture); string path = Path.Combine(@"パス", folderName);
string filePath = @"pathと同じパス"; string[] subFolders = Directory.GetDirectories(filePath, "*", SearchOption.AllDirectories); string max = subFolders.Max();
Console.WriteLine( $"folderName={folderName}" ); Console.WriteLine( $"path={path}" ); Console.WriteLine( $"filePath={filePath}" ); Console.WriteLine( $"max={max}" );
max と path は同じ値ですか?それとも違う値ですか? 疑似コードすぎて私にはわかりませんが、この結果をみれば どの変数を使ってCSVのパスを作ればいいかがわかると思います。
> 当初Directory.GetDirectoriesの第一引数にPath.Combineで作ったpath変数を使ってもみましたが > CSVファイルが作れず、わざわざfilePath変数を作り結果上のようなコードになってしまいました。
subFolders = Directory.GetDirectories( path, "*", SearchOption.AllDirectories );
としてみたら、max に当たるものがうまく取り出せなかったということですか? ちなみに、上記の場合、subFolders に入るのは、path のサブディレクトリです。
|