IO.File.delete(パス)
や
IO.Directory.Delete(パス)
などのパス指定先に
System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache)
インターネットキャッシュなどの
特殊ディレクトリなどのパスを指定するやり方をおしえてください。
ためしに
IO.Directory.Delete(System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache))
こんな漢字にやってみましたがうまくいきませんでした。
> こんな漢字にやってみましたがうまくいきませんでした。
「うまくいかなかった」とはどういうことでしょうか。
おそらく例外が発生したのだと思いますが,例外が発生した時の例外に含まれる情報 (型含む) は,非常に重要な情報源です。
今回の場合だと,
MSDN: Directory.Delete メソッド (String) (System.IO)
http://msdn.microsoft.com/ja-jp/library/62t64db3.aspx
に
> 指定したパスから空のディレクトリを削除します。
と書いてある通り,ディレクトリを削除できるのはディレクトリが空の場合に限ります。
InternetCacheディレクトリはおそらく空ではないでしょうから,削除に失敗したのでしょう。
とりあえず,Directory.Deleteのオーバーロード
MSDN: Directory.Delete メソッド (String, Boolean) (System.IO)
http://msdn.microsoft.com/ja-jp/library/fxeahc5f.aspx
を使えば空でなくても削除できます。
もちろん,他のプロセスが開いている等で削除できないファイルorディレクトリがあれば削除できませんが。
ところで,InternetCacheディレクトリを削除するのは非常に問題があると思われます。
MSDN: Directory.GetDirectories メソッド (String) (System.IO)
http://msdn.microsoft.com/ja-jp/library/c1sez4sc.aspx
で全てのサブディレクトリを列挙して削除したり,
MSDN: Directory.GetFiles メソッド (System.IO)
http://msdn.microsoft.com/ja-jp/library/system.io.directory.getfiles.aspx
で全てのファイルを列挙して削除するようにして,InternetCacheディレクトリ自体を削除しないようにする方がよいでしょう。
正攻法としては,
MSDN: FindFirstUrlCacheEntry Function (Windows)
http://msdn.microsoft.com/en-us/library/aa384026.aspx
などのWinInet APIを使ってキャッシュをクリアする事でしょうけれど……。
目的が「インターネット一時ファイル」のクリアなら、
ClearMyTracksByProcess を利用する事もできます。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+201002/10020013.txt
FindFirstUrlCacheEntry の方のサンプルとしては、このあたりに。
http://tinyurl.com/FindFirstUrlCacheEntry
http://support.microsoft.com/kb/326201/ja
回答ありがとうござます
Dim stPrompt As String = String.Empt
System.IO.File.Delete("ここの場所")
このような場合に
stPromptがある複数のファイルのパスを指定している場合にて
そのstpromptをすべて除去したいのですが
Dimで宣言した変数を指定する場合
単刀直入に System.IO.File.Delete("stPrompt")
これでいいのでしょうか?
キャッシュファイルだと大変そうなのでクッキーファイルの中身除去の
コードです。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim UserName As String
UserName = SystemInformation.UserName
' 必要な変数を宣言する
Dim stPrompt As String = String.Empty
' 拡張子が .txt のファイルを列挙する
For Each stFilePath As String In System.IO.Directory.GetFiles("C:\Documents and Settings\" & UserName & "\Cookies", "*.txt")
stPrompt &= stFilePath & System.Environment.NewLine
Next stFilePath
↑ここで、フォルダ内のファイルを探しあてます。
System.IO.File.Delete("stPrompt")
↑ここで探しあてたファイルをすべて除去
何か違ってることがありましたらご教授ください!!
お願いします!
End Sub
一気に削除ではなく,一個一個削除していきます。
なので,For Eachの中でFile.Deleteする必要があります。
つまりは,
File.Delete(stFilePath)
がFor Eachの中身になります。
あと,
> System.IO.File.Delete("stPrompt")
stPrompt変数に含まれるファイルを指定したい場合は,こうではなく
System.IO.File.Delete(stPrompt)
と,二重引用符で囲わずに書く必要があります。
# stPromptを指定すると改行コードが入ったりしているので例外が発生すると思いますが。
YuOさん回答ありがとうございます
見事に解決できました感謝です。
本当にありがとうございました!
ツイート | ![]() |