Saya ingin tahu (menggunakan C #) bagaimana saya bisa menghapus file di direktori tertentu yang lebih tua dari 3 bulan, tapi saya rasa periode tanggal bisa fleksibel.
Hanya untuk memperjelas: Saya mencari file yang lebih lama dari 90 hari, dengan kata lain file yang dibuat kurang dari 90 hari yang lalu harus disimpan, semua yang lain dihapus.
Jawaban:
Sesuatu seperti ini akan berhasil.
sumber
LastAccessTime
- Anda harus mencari propertiCreationTime
jika Anda mau!Ini lambda 1-liner:
sumber
new DirectoryInfo(dir).GetFiles()
lebih cepat daripadanew FileInfo(f)
untuk setiap file.Bagi mereka yang suka menggunakan LINQ secara berlebihan.
sumber
.ToList()
panggilan menambahkan selain loop kedua melalui file yang cocok?List<T>
mendefinisikanForEach
metode yang dapat digunakan untuk menerapkanAction<T>
ke semua elemen. Sayangnya tidak ada metode ekstensi seperti itu untukIEnumerable<T>
.ForEach
metode ekstensi saya sendiriIEnumerable<T>
, terkadang saya lupa metode ini tidak ada di dalamnya.Berikut adalah cuplikan cara mendapatkan waktu pembuatan file di direktori dan menemukan yang telah dibuat 3 bulan yang lalu (tepatnya 90 hari yang lalu):
sumber
ToList()
,DirectoryInfo.GetFiles()
mengembalikan aFileInfo[]
.foreach()
loop untuk menampung nilai(DateTime.Now- new TimeSpan(90, 0, 0, 0))
. Tidak ada alasan untuk menghitungnya berulang kali dalam loop.The GetLastAccessTime properti di kelas System.IO.File harus membantu.
sumber
Pada dasarnya Anda dapat menggunakan Directory.Getfiles (Path) untuk mendapatkan daftar semua file. Setelah itu Anda mengulang daftar dan memanggil GetLastAccessTim () seperti yang disarankan Keith.
sumber
Sesuatu seperti itu
sumber
saya telah mencoba kode ini dan bekerja dengan sangat baik, semoga ini dijawab
sumber
Pendekatan paling kanonik ketika ingin menghapus file selama durasi tertentu adalah dengan menggunakan LastWriteTime file (Terakhir kali file diubah):
(Di atas berdasarkan jawaban Uri tetapi dengan
LastWriteTime
.)Setiap kali Anda mendengar orang berbicara tentang menghapus file yang lebih lama dari kerangka waktu tertentu (yang merupakan aktivitas yang cukup umum), melakukannya berdasarkan LastModifiedTime file hampir selalu apa yang mereka cari.
Alternatifnya, untuk keadaan yang sangat tidak biasa Anda dapat menggunakan yang di bawah ini, tetapi gunakan ini dengan hati-hati karena disertai peringatan.
Waktu file dibuat di lokasi saat ini. Namun, berhati-hatilah jika file disalin, itu akan menjadi waktu yang disalin dan
CreationTime
akan lebih baru dari file ituLastWriteTime
.Jika Anda ingin menghapus file berdasarkan terakhir kali mereka dibaca, Anda dapat menggunakan ini, tetapi tidak ada jaminan akan diperbarui karena dapat dinonaktifkan di NTFS. Periksa
fsutil behavior query DisableLastAccess
untuk melihat apakah sudah aktif. Juga di bawah NTFS mungkin membutuhkan waktu hingga satu jam untuk LastAccessTime file untuk memperbarui setelah itu diakses.sumber
Anda hanya perlu FileInfo -> CreationTime
dan dari sekadar menghitung perbedaan waktu.
di app.config Anda dapat menyimpan nilai TimeSpan dari berapa lama file harus dihapus
periksa juga metode Kurangi DateTime .
semoga berhasil
sumber
Sebagai alternatif, Anda dapat menggunakan Metode File.GetCreationTime jika Anda perlu menghapus file berdasarkan tanggal pembuatan.
sumber
digunakan dalam pemuatan halaman atau layanan web atau penggunaan lainnya.
Konsep saya evrry 7 hari saya harus menghapus file folder tanpa menggunakan DB
sumber
sumber
Misalnya: Untuk membuka proyek folder saya di sumber, saya perlu membuka dua folder. Saya membuat algorim ini menjadi 2 hari seminggu dan menjadi empat jam
sumber
Saya menggunakan berikut ini di aplikasi konsol, menjalankan sebagai layanan, untuk mendapatkan info direktori dari file App.Settings. Jumlah hari untuk menyimpan file juga dapat dikonfigurasi, dikalikan dengan -1 untuk digunakan dalam metode AddDays () dari DateTime.Now.
sumber
Contoh jenis SSIS .. (jika ini membantu siapa pun)
sumber
karena solusi dengan
new FileInfo(filePath)
tidak mudah diuji, saya sarankan untuk menggunakan Wrappers untuk kelas sepertiDirectory
,File
danPath
seperti ini:Kemudian gunakan sesuatu seperti ini:
sumber
Buat saja fungsi hapus kecil yang dapat membantu Anda mencapai tugas ini, saya telah menguji kode ini dan itu berjalan dengan baik.
Fungsi ini menghapus file yang lebih lama dari 90 hari serta file dengan ekstensi .zip untuk dihapus dari folder.
sumber