現在、特定のデータをテキストファイルに出力するシステムの開発を行っています。
起動したら自動でデータを読み込んで出力し、該当の箇所に保存する流れです。
System.IO.StreamWriterを用いて、出力自体はできるようになりました。
ただテキストファイルを保存する際に、拡張子の前に連番を設定したいのですがそこがうまくいきません。
ファイル名は、「ABC+YYYYMMDD+3桁の連番+拡張子」にしたいです。
連番に関しては、1回の出力ごとに001→002→003……といったようにしたいです。
また、手入力等で同一名のファイルが既にあれば、追記します。
(例えば2020/07/13に出力し、出力が3回目の場合、該当のフォルダに
「ABC20200713003.txt」というファイルがあれば、そのファイル内の下の行に追記で出力します。
こちらは作成済です。)
連番の作成方法について調べたら、以下のようなコードがあったのでペーストしてみました
1 Private Sub SurroundingSub()
2 Dim di = New DirectoryInfo(Environment.CurrentDirectory)
3 Dim tagName = "textfile"
4 Dim max = di.GetFiles(tagName & "???.txt").[Select](Function(fi) Regex.IsMatch(fi.Name, "(?i)(\d{3}).txt$")).Where(Function(m) m.Success).[Select](Function(m) Int32.Parse(m.Groups(1).Value)).DefaultIfEmpty(0).Max()
5 Dim fileName = String.Format("{0}_{1:d3}.txt", tagName, max + 1)
6 Console.WriteLine(fileName)
7 End Sub
ただしこちらの場合、4行目のRegexで宣言されていない旨のエラーが出てしまいました。
連番に関してある程度調べましたが、VB.NETで取り扱っているものが少なく、
条件に合わないか上記のようなエラーになってしまいました。
必要な情報があれば追記いたします。
よろしくお願いいたします。
VisualStudio2019
.Net FrameWorkは、確か4.6.1です
回答1件
あなたの回答
tips
プレビュー