はじめまして。
プログラムに関して全くの初心者です。
今、WindowsXPでVisual Stadio 2005 Academic Edition
Visual C++をCLRで作成しているのですが、
作成したいプログラムは、フォルダを選択し
その中のファイルを日付で照合させて削除したいのでが、
FolderBrowserDialogを使ってフォルダの選択は出来るのですが
そのフォルダの中のファイルをどうやって
日付で照合させてらいいのかわかりません。
どなたか教えて頂けないでしょうか?
よろしくお願いします。
フォルダ内のファイルの一覧は「System.IO.Folder」クラスの「GetFiles」メソッドを使えば取得できます。
http://msdn2.microsoft.com/ja-jp/library/07wt70x2(VS.80).aspx
MSDNのC++の例はIEnumeratorを使っていますが、for each文を使えばもう少しシンプルになります。
array<String^>^ fileEntries = Directory::GetFiles(targetDirectory);
for each(String^ fileName in fileEntries)
{
// fileNameにはファイル名が格納されている
}
対象のファイルパスパスから日付等の情報を取得するには、「System.IO.FileInfo」クラスを使います。
http://msdn2.microsoft.com/ja-jp/library/system.io.fileinfo(VS.80).aspx
どの日付を取得したいのか不明なので、適切なプロパティおよびメソッドをご自分で探してみてください。
ちなみに、
>Visual C++をCLRで作成
であれば、C++だけではなく、C#やVB.NETのサイトも参考にされるとよいでしょう。
文法以外のところは、何をしたくて何を使えばいいのか等、使うクラスはすべて同じですので。
VB.NETなら
http://blogs.wankuma.com/naoko/archive/2007/01/19/56991.aspx
とか。
Blueさんお返事遅くなり申し訳ありません。
アドバイスありがとうございます。
Blueさんのアドバイスを元に調べながら作成をしているのですが、
思うようにいきません。
内容はディレクトリからファイルパス経由してファイルの作成日付を取得し、textBox1に打った日付と比較し、textBox1に打った日付より
以前のファイルに対して処理をかけたいのですが、
下記のコードはどこが間違っているのでしょうか?
お手数ですが、よろしくお願いします。
array< String^ >^ fileEntries = Directory::GetFiles(targetDirectory);
for each( String^filePath in fileEntries ){
DateTime dtsearch = DateTime::Parse( textBox1->Text );
DateTime dt = File::GetCreationTime( filePath );
bool operator <= ( dt, dtsearch );
if( true ){
処理;
}
> DateTime dtsearch = DateTime::Parse( textBox1->Text );
は途中で変らないからforのなかで行う必要はないよね。
> bool operator <= ( dt, dtsearch )
は、
st <= dtsearch
と書くのでは。
それと、戻り値使わないと比較した意味ないよ。
> if( true )
これじゃあ常に真だよ。
常に処理してしまう。
if( st <= dtsearch )
と書くのでは。
なお、実際に動作確認した訳ではないので合っているかわかりません。
Blueさん,wclrpさんありがとうございました。
おかげさまで完成しました。
勉強になりました。
FolderBrowserDialogの使い方を教えていただけないでしょうか。
ツイート | ![]() |