需求:
目標路徑下有很多同檔案名,不同后綴名的檔案,比如1.ZIP和1,RAR這種,我要把所有同檔案名,后綴名是RAR的檔案刪掉.
我的思路:
1.遍歷目標路徑下的檔案名(含后綴名),得到一個檔案名的變數filesname;
2.substring掉后綴名后得到_filesname;
3.將_filesname放入到array或者list中去,再for回圈,array[i-1]==array[i]的話,i放到array[] temp里面去;
4.遍歷temp,得到變數j,j+".RAR",然后file.delete();
卡住的地方:
1.第三點,變數不知道怎么放進去,只記得應該是可以的
如果有人看到這個帖子,麻煩幫幫手啊,如果可以的話,最好代碼一下,感激不盡!謝謝!
uj5u.com熱心網友回復:
相同的檔案名能在一個目錄下面嗎?
uj5u.com熱心網友回復:
額,檔案通配符你可以了解下很多操作都是支持檔案通配符的
uj5u.com熱心網友回復:
使用前先測驗。var keys = System.IO.Directory.GetFiles(@"C:\xxx").GroupBy(f => Regex.Match(f, ".*(?=\\.[^.]+)$").Value);
//按檔案名稱(不帶后綴)作為key,對所有檔案進行分組
foreach (var g in keys)
{
//如果某個名稱有多種后綴的檔案結果,就洗掉rar結尾的檔案;
//如果某個名稱只有一個檔案,就不處理
if (g.Count() >= 2)
{
try
{
System.IO.File.Delete($"{g.Key}.rar");
}//嘗試洗掉.rar檔案,也別管有沒有這個檔案了。
catch (Exception) { }
}
}
uj5u.com熱心網友回復:
正則寫錯了,$符號應該在括號里邊,前面用.+匹配更好一點。正確的正則:Regex.Match("a - 副本.rar", ".+(?=\\.[^.]+$)").Value
uj5u.com熱心網友回復:
var groupFiles = System.IO.Directory.GetFiles(direPath).GroupBy(p => System.IO.Path.GetFileNameWithoutExtension(p));
foreach (var files in groupFiles)
{
if (files.Count() >= 2)
{
foreach (string file in files)
{
string ext1 = System.IO.Path.GetExtension(file);
if (ext1.ToLower() == ".rar")
{
System.IO.File.Delete(file);
}
}
}
}
uj5u.com熱心網友回復:
第二層for可以省掉,.rar檔案只有一個,如果要做判斷,直接用File.Exists就行。
uj5u.com熱心網友回復:
東西就是那么個東西,怎么玩隨意。我這里只是告訴你有檔案通配符,更改后綴有changeExtension方法,判斷檔案存在有ExistsSystem.IO.DirectoryInfo directoryInfo=new DirectoryInfo(@"C:\Users\Administrator\Downloads");
foreach (var fileInfo in directoryInfo.GetFiles("*.zip").Select(p=> new FileInfo(System.IO.Path.ChangeExtension(p.FullName, "rar"))).Where(p=>p.Exists))
{
fileInfo.Delete();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/268045.html
標籤:C#
上一篇:c# ffmpeg rtsp流保存成MP4,局域網的rtsp流保存正常,但是外網rtsp流保存之后播放視頻的時候有13秒的空資料。
