開発は全くの初心者です。言語はc#です。
たくさん調べたのですが、いい方法がわからなかったので困っています。
ファイル処理のプログラムを作成しているのですが、例えば、入力フォルダに、
a_2021021501.txt
a_2021021502.txt
b_2021021503.txt
c_2021021504.txt
c_2021021505.txt
のような入力データがあった際、
二項目目の日付の最終のもののみを処理対象として処理対象として、
別なフォーマットに変換して出力フォルダに出力する処理に渡したいです。
どのようにすればよいでしょうか?
a_2021021502.txt
b_2021021503.txt
c_2021021505.txt
だけを対象にしたい。
知識不足で申し訳ございませんが、どなたかご教授の方よろしくお願いいたします。
下記のコードでは、全ファイルを作業フォルダに移動させることができますが、
やりたいことは、ファイル名を区切り文字"_"で区切った、一項目目に対して、二項目目を比較して、
ファイル名内の最終日付のものだけを対象に作業フォルダに移動させたいです。。
c#
1 2using System; 3using System.Collections.Generic; 4using System.IO; 5using System.Linq; 6using System.Text; 7using System.Threading.Tasks; 8 9namespace Fileconvert 10{ 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 string filePath = @"c:\temp\"; 16 string wfilePath = @"c:\work"; 17 18 if (Directory.Exists(filePath)) 19 { 20 string[] files = System.IO.Directory.GetFiles(filePath, "*.txt", System.IO.SearchOption.TopDirectoryOnly); 21 for(int i=0;i<files.Length;i++) 22 { 23 string wData = Path.Combine(wfilePath, Path.Combine(Path.GetFileName(files[i]))); 24 if(!File.Exists(wData)) 25 { 26 File.Copy(files[i], wData); 27 } 28 else 29 { 30 File.Delete(wData); 31 File.Copy(files[i], wData); 32 } 33 } 34 } 35 36 } 37 } 38} 39
提示頂いた全てのファイルを処理する方法は分かりますか?
分かる場合は全てのファイルを処理するコードを上げてもらえますか?
> たくさん調べたのですが、いい方法がわからなかったので困っています。
良い方法でなく、あまり良くないと思える方法でも良いからまず目的を実現できるコードを自力で書けるようにしましょう。今のままではどこまで自力でできるか読んだ者に分かりません。
> 二項目目の日付の最終のもののみを処理対象として処理対象として、
> 別なフォーマットに変換して出力フォルダに出力する処理に渡したいです。
そこがそもそも意味不明です。
初心者で、ちょっとはずかしいのですが、今かけているところは上げますね。
このように、全ファイルを対象にして作業フォルダにコピーすることはできるのですが、
対象の絞り方が思いつきません・・。見苦しくて申し訳ありません。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fileconvert
{
class Program
{
static void Main(string[] args)
{
string filePath = @"c:\temp\";
string wfilePath = @"c:\work";
if (Directory.Exists(filePath))
{
string[] files = System.IO.Directory.GetFiles(filePath, "*.txt", System.IO.SearchOption.TopDirectoryOnly);
for(int i=0;i<files.Length;i++)
{
string wData = Path.Combine(wfilePath, Path.Combine(Path.GetFileName(files[i])));
if(!File.Exists(wData))
{
File.Copy(files[i], wData);
}
else
{
File.Delete(wData);
File.Copy(files[i], wData);
}
}
}
}
}
}
そのコードを質問内に書いてください。
質問は編集可能ですので。
ありがとうございます。質問を再度編集してみました。
お手数おかけしてすみません。
回答2件
あなたの回答
tips
プレビュー