C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ファイル取得


(過去ログ 87 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■51819 / inTopicNo.1)  ファイル取得
  
□投稿者/ masa (2回)-(2010/07/21(Wed) 13:53:34)

分類:[.NET 全般] 

こんにちは。

XMLで親フォルダパス、消したくないフォルダパス、拡張子を設定しています。

@拡張子をみて親フォルダパス内のファイル・フォルダを削除(読み専も削除)
A消したくないフォルダパス設定時は非削除
Bファイルの作成日、更新日が10日以上更新されていなかったときのみ削除

以上の3つを踏まえて作成したいですがAをどう判断していいか迷ってます。

Try
'// XML内のシステム情報分繰り返す(親)
For intIndex = 0 To p_objXml.SysInfoCnt - 1
'親パス取得
str_Oyapass = p_objXml.Oyapass(intIndex)

'// XML内のシステム情報分繰り返す(NO削除)
For intIndex2 = 0 To p_objXml.SysInfoCnt2 - 1
'削除しちゃいけないパス
str_Kopass = p_objXml.Kopass(intIndex2)

Next intIndex2

'// XML内のシステム情報分繰り返す(拡張子)
For intIndex3 = 0 To p_objXml.SysInfoCnt3 - 1
str_Kakucho = p_objXml.Kakushosi(intIndex3)
Next intIndex3

Next intIndex
Catch ex As Exception
引用返信 編集キー/
■51820 / inTopicNo.2)  Re[1]: ファイル取得
□投稿者/ よねKEN (548回)-(2010/07/21(Wed) 14:18:37)
よねKEN さんの Web サイト
> @拡張子をみて親フォルダパス内のファイル・フォルダを削除(読み専も削除)
> A消したくないフォルダパス設定時は非削除
> Bファイルの作成日、更新日が10日以上更新されていなかったときのみ削除
>
> 以上の3つを踏まえて作成したいですがAをどう判断していいか迷ってます。

肝心のどう迷っているのか、要は何がわからないのか?という説明がありません。
提示のコードもXMLの設定を取得する箇所だけで、肝心の削除するロジックが示されていませんし。

一般論としては、フォルダやファイルを削除する場合、

(1) 削除したいファイルやフォルダを列挙する
(2) 列挙したファイルやフォルダを削除する
(3) (1)に戻る

という流れがあるかと思いますが、(1)と(2)の間に削除対象外の条件に合致するかどうかをチェックし、
合致した場合にそのファイルまたはフォルダは(2)の処理を飛ばす、という形になると思います。


引用返信 編集キー/
■51821 / inTopicNo.3)  Re[2]: ファイル取得
□投稿者/ masa (3回)-(2010/07/21(Wed) 15:32:45)
2010/07/22(Thu) 11:36:02 編集(投稿者)

GetFilesの拡張子を変数に格納することって可能ですか?
引用返信 編集キー/
■51842 / inTopicNo.4)  Re[3]: ファイル取得
□投稿者/ おのでら (14回)-(2010/07/22(Thu) 12:17:47)
おのでら さんの Web サイト
No51821 (masa さん) に返信
> 2010/07/22(Thu) 11:36:02 編集(投稿者)
>
> GetFilesの拡張子を変数に格納することって可能ですか?

変数への格納は如何様にでも出来ます。

ファイル名から拡張子を取得するには「Path.GetExtension」メソッドが使えます。
http://msdn.microsoft.com/ja-jp/library/system.io.path.getextension.aspx

※GetFiles が Directory.GetFiles メソッドを指しているのであれば
引用返信 編集キー/
■51850 / inTopicNo.5)  Re[4]: ファイル取得
□投稿者/ masa (4回)-(2010/07/22(Thu) 13:52:29)
2010/07/22(Thu) 15:26:04 編集(投稿者)
ありがとうございます。
ファイル取得できました。

配列aa直下のファイル以外を配列bbからチェックして削除したいのですが
最初のLOOPでC:\test\test4\aaa.txtを削除してしまいます。
どう考えればC:\test\test4\aaa.txtは削除対象外となるのでしょうか・・・。


配列aaに格納
 ■aa(C:\test\test2,C:\test\test4)

配列bbに格納	
 ■bb(C:\test\aaa.txt,C:\test\bbb.txt,C:\test\test2\aaa.txt,C:\test\test2\test3\aaa.txt,C:\test\test4\aaa.txt)



For cnt1 = 0 To aa(cnt1)
    '削除しちゃいけないパス
    str_Kopass = aa(cnt)
    For Intpass = 0 To bb(Intpass)
        Dim cFileInfo As New System.IO.FileInfo(bb(intpass))
        If str_Kopass <> cFileInfo.DirectoryName Then
            System.IO.File.Delete(bb(intpass))
        End If
    Next Intpas
Next cnt1






引用返信 編集キー/
■51851 / inTopicNo.6)  Re[5]: ファイル取得
□投稿者/ 通行人A (1回)-(2010/07/22(Thu) 16:57:50)
No51850 (masa さん) に返信
そもそもこれはVBだよね?
それと、ここに書いてあるソースで動かしているのかい?

For cnt1 = 0 To aa(cnt1) '←これはおかしくないか?

もう少しVBの基本文法を勉強した方がいいんじゃないの?
引用返信 編集キー/
■51860 / inTopicNo.7)  Re[6]: ファイル取得
□投稿者/ みきぬ (935回)-(2010/07/23(Fri) 10:03:49)
文法の問題もあるけど、ロジックの組み立て方も見直さないとね。
bb の要素それぞれに対して、aa の要素のどれにも該当しなければ削除する(どれかに該当していたら削除しない)、とかしないと。

今の処理は、aa の要素それぞれに対して、bb の要素のどれかに該当しなければ、bb の要素のファイルを削除する、になってるよ。
どれかには必ず該当しないだろうから、結果的に bb の要素全部削除してしまうはず。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -