- 締切済み
フォルダ内取得について
質問です。 「あるフォルダ以下にあるファイルをすべて取得する」で、 Dim files As New ArrayList '"C:\My Documents"以下のファイルをすべて取得 GetAllFiles("C:\My Documents", "*.*", files) 'ListBox1に結果を表示する ListBox1.Items.AddRange(files.ToArray()) でフォルダ内を取得する方法は分かっていますが、 この取得したファイル以外で特定のファイル以外を 削除する事は出来ますでしょうか? 例えば Test1.txt←必要 Test2.txt←不要 Test3.txt←必要 でファイル取得した時に ("Test1.txt")と("Test3.txt")だけ残して 他は削除したいのです。 必ずしも"test2.txt"という名前ではありません。 この行動を文法(ソース)を書きたいのですが、 分かりません。 どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- temtecomai2
- ベストアンサー率61% (656/1071)
> でファイル取得した時に > ("Test1.txt")と("Test3.txt")だけ残して > 他は削除したいのです。 「削除したい」 という要望のところを具体的に。 1. 実際にファイルを削除する 2. リストボックスに登録したくない 1 の場合、GetAllFiles 関数が ArrayList にファイル群のパスを格納する目的の機能であれば、その中に削除を実装するのは不適当かと思います。汎用性が失われそうな気がします。 先にファイル削除を行ってから GetAllFiles 関数を呼び出すのがよろしいかと。 2. の場合、ArrayList に入れたくないファイルのリストを引数で与えるとか。 Function GetAllFiles(aParentPath As String, aFileName As String, aDestinationArray As ArrayList) の他に Function GetAllFiles(aParentPath As String, aFileName As String, aDestinationArray As ArrayList, aOmitList As ArrayList) なんて関数も作るとか。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
GetAllFiles()という関数がどのような結果をfilesに格納するのか不明だったのであいまいに書きました。 もし、filesに格納されているのがフルパスのファイル名なら Kill files(index) の形式でファイル削除が出来ます。 でもこの程度のことなら、ヘルプや参考書をみれば5分で判ることだと思うけど...
- Hayashi_Trek
- ベストアンサー率44% (366/818)
("Test1.txt")と("Test3.txt")だけ残して他は削除するのなら、 FileName = ※※Filesの中の1ファイル名からパス部分を取り除いた名前※※ If (FileName <> "Test1.txt") And (FileName <> "Test3.txt") Then ※※FileNameで示されるファイルの削除処理※※ End If
補足
回答有難うございます。 少し理解出来ないのですが、 f (FileName <> "Test1.txt") And (FileName <> "Test3.txt") Then ※※FileNameで示されるファイルの削除処理※※ End If の※※FileNameで示されるファイルの削除処理※※が 理解出来ません。 もう少し詳細に明記出来ないでしょうか?