Hocam valla helal olsun kompleks bir algoritmayı yazmak zaten zor, hem anlatıp hem yazmak çok daha zor. Teşekkürler bu kaliteli eğitim için.
@feyzakaymakc7385 Жыл бұрын
Mahallemizde güzel bir kavga var onu da izleyip geliyorum deyip akşam gelmeniz :) hocam teşekkürler
@yunusemregunduz53752 жыл бұрын
Hocam nasıl bi kavga bu gün kararmış, taraflardan biri ölene kadar devam etti galiba :D
@ReveNqe7 ай бұрын
29:32işte beklediğim tepki harikasınız hocam 😀
@JokerJoker-ls1gs2 жыл бұрын
Hocam, Gece gündüz çalışıyorsunuz. Maşallah
@faridmurshudov5796 Жыл бұрын
FileRename methodunun bu formada daha qısa, oxunaqlı və əlavə olaraq first parametri ötürmədən yazmaq olardı fikrimcə :) private string FileRename(string path, string fileName) { string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); string regulatedFileName = NameOperations.CharacterRegulatory(oldName); string newFileName = $"{regulatedFileName}{extension}"; string fullPath = Path.Combine(path, newFileName); int iteration = 1; while (File.Exists(fullPath)) { newFileName = $"{regulatedFileName}-{iteration}{extension}"; fullPath = Path.Combine(path, newFileName); iteration++; } return newFileName; }
@yazilimciyizBiz Жыл бұрын
03.11.2023 bunu da bitirdik. Ugulamalı .. Teşekkürler
@ertugrulkayabas71572 жыл бұрын
Hocam , eline emeğine sağlık. Çok güzel ve bilgilendirici bir eğitim.
@lmcgs Жыл бұрын
Arada videolarınızı keyifle izliyorum. Burada uğraştığınız problemi görünce de aklıma şöyle bir çözüm geldi. Emeğinize sağlık. 👍 private static async Task FileRenameAsync(string path, string fileName, int? counter = 0) { var fileExtension = Path.GetExtension(fileName); var oldName = Path.GetFileNameWithoutExtension(fileName); var newName = FileNameCleaner.Clean(oldName); if (counter > 0) newName += "-" + counter; bool exists = await Task.Run(() => File.Exists($"{path}\\{newName}")); if (exists) { counter++; await FileRenameAsync(path, fileName, counter); } return newName + fileExtension; }
@ilkinrufullayev Жыл бұрын
Hocam çok sempatiksiniz 😄
@husokanus2 жыл бұрын
Hocam elinize ağzınıza sağlık. Naçizane fikrim 38:32 de son tireyi bulmak için basitçe LastIndexOf() metodu kullanabiliriz. Yine naçizane FileRenameAsync metodunun performans olarak yavaş kalabileceğini düşünüyorum. Olur da aynı dosyadan 1000 tane yükleme yapılmış ise, 1000 kez dosyayı isimlendirip dosyanın mevcut olup olmadığını kontrol ediyoruz. Bunun yerine yükleme yapmak istediğimiz isimle başlayan dosyaları çekip en son yükleme yapılan sayıyı bulursak çok daha hızlı çalışacağını düşünüyorum (1000 dosya için yükleme süresi ortalama : 10 ms): private async Task FileRenameAsync(string path, string fileName) { string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); string regulatedFileName = RenameHelper.CharRegulator(oldName); var files = Directory.GetFiles(path, regulatedFileName + "*"); //bu isimle başlayan tüm dosyaları bulur if (files.Length == 0) return regulatedFileName + "-1" + extension; //Demek ki bu isimde ilk kez dosya yükleniyor. int[] fileNumbers = new int[files.Length]; //Dosya numaralarını buraya alıp en yükseğini bulucaz. int lastHyphenIndex; for (int i = 0; i < files.Length; i++) { lastHyphenIndex = files[i].LastIndexOf("-"); fileNumbers[i] = int.Parse(files[i].Substring(lastHyphenIndex + 1, files[i].Length - extension.Length - lastHyphenIndex -1) ); } var biggestNumber = fileNumbers.Max(); //en yüksek sayıyı bulduk biggestNumber++; return regulatedFileName + "-" + biggestNumber + extension; //bir artırıp dönüyoruz }
@onurkarabeyoglu Жыл бұрын
Selamlar Huso Ka, Öncelikle dosya yükleme işleminde bana farklı bir açı kattığın için teşekkür etmek istedim. Mevcut bir kaç e-ticaret sistemimde, toplu ürün resmi yükleme aşamasında resimleri ürün adı ile isimlendirdiğim için bu konuda farklı yöntemlere başvurmuştum. Kattığın açı sayesinde, bir kaç deneme yaparak herhangi bir problem olmadan çok daha kısa sürelerle yükleme yapabildiğimi keşfettim. Bir kaç test daha yaptıktan sonra, herhangi bir problem çıkmazsa yayına alacağım. Eğer bir aksaklık olursa buradanda bildiriyor olurum. Belki yorumu diğer gören arkadaşlar içinde faydalı olur. Tekrardan emeğine sağlık :)
@husokanus Жыл бұрын
@@onurkarabeyoglu Faydasi olduysa ne mutlu bana :)
@husokanus Жыл бұрын
@@galaxy1066 2. Yuklemede resim-2.jpg olarak yuklucek
@suayipkillibacak11 ай бұрын
hacı eyvallah ben bunu kullandım ama 31.Derste azure storage upload ederken Directory.GetFiles olmadığı için bu algoritmayı kendim tasarlamak zorunda kaldım. protected delegate List GetFiles(string containerName); protected async Task FileRenameAsync(string pathOrContainerName,string filename, GetFiles getFiles) { string newFileName = await Task.Run(async () => { string extension = Path.GetExtension(filename); string oldName = Path.GetFileNameWithoutExtension(filename); string regulatedFileName = $"{NameOperation.CharacterRegulatory(oldName)}"; var files = getFiles(pathOrContainerName); List fileList = new(); List myHashFile = new(); if (files.Count != 0) { for (int i = 0; i < files.Count; i++) { string a = ""; for (int j = 0; j < Math.Min(files[i].LastIndexOf("-"), regulatedFileName.Length); j++) { if (files[i][j] == regulatedFileName[j]) { a += files[i][j]; if(a == regulatedFileName && files[i].Substring(0, files[i].LastIndexOf("-")) == regulatedFileName) { fileList.Add(files[i]); } } else { break; } } } } else { return newFileName = regulatedFileName + "-1" + extension; } if(fileList.Count == 0) return newFileName = regulatedFileName + "-1" + extension; int[] fileNumbers = new int[fileList.Count]; int lastHypheIndex; for (int i = 0; i < fileList.Count; i++) { lastHypheIndex = fileList[i].LastIndexOf("-"); var filesLength = fileList[i].Length; fileNumbers[i] = int.Parse(fileList[i].Substring(lastHypheIndex + 1, filesLength - extension.Length - lastHypheIndex -1)); } var biggestNumber = fileNumbers.Max(); biggestNumber++; newFileName = regulatedFileName + "-" + biggestNumber + extension; return newFileName; }); return newFileName; }
Hocam eğitim için çok teşekkürler. Kanalınızdan çıkmaz oldum her konuda eğitiminiz, detaylarıyla mevcut. Kodlarda değişiklik yaptım. Değerlendirilmesi ve eğer uygunsa kullanılması açısından paylaşıyorum. Dosya ismi extension'dan önce sayıyla bitmesi durumunda dosya ismini değiştirerek sondaki sayıyı arttırmakta (Örn: Photo-23-05-2023.jpg => Photo-23-05-2024.jpg) Method içerisinde tryNo ile bu durumu engellemeye çalıştım umarım beğenirsiniz. async Task FileRenameAsync(string path, string fileName, bool first = true, int tryNo = 0) { string newFileName = await Task.Run(async () => { //Get the extension of file string extension = Path.GetExtension(fileName); string newFileName = string.Empty; if (first) { string oldName = Path.GetFileNameWithoutExtension(fileName); newFileName = $"{NameOperation.CharacterRegulatory(oldName)}{extension}"; } else { newFileName = fileName; //check it's first check/adjustment on the name or not int indexNo = newFileName.IndexOf("-"); if (indexNo == -1) { //if it's first adjustment, just add "-2" on the end of the fileName newFileName = $"{Path.GetFileNameWithoutExtension(fileName)}-2{extension}"; } else { int lastIndex = 0; while (true) { lastIndex = indexNo; indexNo = newFileName.IndexOf("-", indexNo + 1); //find index after last index if (indexNo == -1) { //When there's no more index, it will return "-1", so we will set our indexNo as latest lastIndex indexNo = lastIndex; break; } } if (tryNo == 0) { newFileName = $"{Path.GetFileNameWithoutExtension(fileName)}-2{extension}"; tryNo++; } else { string fileRawName = newFileName.Substring(0, indexNo); string fileNo = newFileName.Split("-").Last().Split(".")[0]; if (int.TryParse(fileNo, out int _fileNo)) { _fileNo++; newFileName = $"{fileRawName}-{_fileNo}{extension}"; } tryNo++; } } } //Check whether file name exists or not if (File.Exists($"{path}\\{newFileName}")) return await FileRenameAsync(path, newFileName, false, tryNo); else return newFileName; }); return newFileName; }
@EropaKINGS2 жыл бұрын
Gençay Hocam, öncelikle emekleriniz ve bu kadar ileri seviye harika eğitimleriniz için çok çok teşekkürler. Rabbim sizlerden razı olsun. FileRenameAsync içerisinde her bir dosya için 'benzer isimde dosya var mı' kontrolü yapmak yerine otomatik olarak benzersizliği sağlayabilecek CharacterRegulatory(fileName) + ddMMyyyyHHmmsss + extension şeklinde bir isimlendirme yapmanın bir sakıncası olur muydu? Böylece hem doğrudan dosya isminden yüklenme zamanı hakkında bir fikrimiz olabilir hem de kontrollerimiz daha da azalabilirdi. Tabi bu çözümün hem benzersizlik hem de SEO'ya uygunluğu hakkında farkedemediğim eksik ya da sıkıntılı yanları da olabilir (Aynı isimde dosyalar için aynı saliseye denk gelebilen Upload işlemi gibi bir risk mesela).
2 жыл бұрын
Valla olmazdı :) O kadar boşuna cebelleştik hiç aklıma gelmedi :DD: Ha dediğin gibi aynı saliseye kadar denk gelen verileri kontrol etmek bu kadar problem olmazdı gibime geliyor :)
@EropaKINGS2 жыл бұрын
@ Hocam, isimlendirme kontrolleri çok fazla zaman aldığı için arkadaşlarla genelde böyle bir yola başvuruyoruz. Şu ana kadar ddMMyyyyHHmmsss bizi yarı yolda bırakmadı. FileUpload, DateTime dönüşümleri vs. gerçekten içerisinde bir sürü kontrol barındırma ihtimali olan baş ağrıtıcı konular. Aslında şu son 2 video ile birlikte hepimizin kodlama esnasında zaman zaman yaşadığı olaylara da şahit olmuş olduk. Bu kısımları kesmeden yazılım geliştirme süreçlerini bizlere net bir şekilde yansıttığın için de ayrıca teşekkürler, Hocam. Son olarak, muhtemelen biliyorsunuzdur ama bir önceki videoda cs dosyasında yaptığınız using referans temizliğini CTRL R + G tuş kombinasyonu ile de otomatik olarak yapabiliyorsunuz. Bu kombinasyon hem gereksiz using'leri siliyor hem de kalan using'leri de isim sırasına göre diziyor. Aklıma gelmişken belki birilerinin işine yarar diye yazayım dedim. :)
@theentein2 жыл бұрын
@ ekledim hocam ben öyle en güncel haliyle sabitlerseniz kodu alabilirler paylaştım. Siz de sonraki derste üzerine yorum yaparsanız sevinirim hatam var mı diye.
Teşekkürler hocam, algoritmayı kurarken biraz zorlandık ama olur öyle :D
@reisli64174 ай бұрын
Sonuncu tireyi bulmak icin last indexof kullanamazmiydik dongu yerine
@emirgurbuz83272 жыл бұрын
Hocam merhabalar, bende şu şekilde bir yöntem geliştirdim. Dosya isminin sonuna numara koydum. Eğer aynı isimde var ise sondaki numara artacak bir şekilde ilerliyor. private async Task FileRenameAsync(string path, string fileName, int num = 1) { return await Task.Run(async () => { string extension = Path.GetExtension(fileName); string oldName = $"{Path.GetFileNameWithoutExtension(fileName)}-{num}"; string newFileName = $"{NameOperation.CharacterRegulatory(oldName)}{extension}"; if (File.Exists($"{path}\\{newFileName}")) { return await FileRenameAsync(path, $"{newFileName.Split($"-{num}")[0]}{extension}", ++num); } return newFileName; }); }
2 жыл бұрын
Evet ya, split ile sonuncu tireye daha rahat gidilebilirdi.
@sametfatih7707 Жыл бұрын
Burada split ile ayırmaya çok gerek varmı direkt "fileName" 'i parametre olarak versek göze daha okunaklı veriyor. Her türlü verdiğimiz parametre yukarıdaki "CharacterRegulatory" fonksiyonunda işleme girmiş olacaktır. return await FileRenameAsync(path, fileName, ++num);
@antichristsuperstar2090 Жыл бұрын
29:30
@yazilimciyizBiz Жыл бұрын
5:25 :)))))))))))))))
@theentein2 жыл бұрын
Hocam " işaretini nasıl halledeceğiz özel karakter olarak?
@xanmqurbanl5490 Жыл бұрын
" \" " escape ile
@erenuzbay2 жыл бұрын
Hocam direk Guid ile isim ataması yapsak idik olmaz mıydı? FileName+Guid.NewGuid() şeklinde
@bilmediklerimiziogreniyoru39102 жыл бұрын
Öyle yapsak seoya uymazdi die hoca öyle uapti
@yapayformat Жыл бұрын
chatgpt yokken çekilen bir takım sıkıntılar
@theentein2 жыл бұрын
Dosya adının önünden veya arkasında veya arasında birden fazla ------------------ varsa veya içinde bir sürü boşluk varsa " " gibi. Çözüm aşağıda. Kod güzel çalışıyor ama fikri olan varsa alırım. Çalışma mantığı şöyle dosya adında yatay çizgileri bulur. mesela 17 tane varsa, her 2 çizgiyi kaldırıp 1 çizgi ekler. böyle böyle en son 2 tane kalır. onu da 1 taneye dönüştürür. bunları boşluklar için de yapar. En son dosya adının ilk ve son karakterine bakar. onlar da çizgi ise onların arasında kalan kısmı alarak dosya adını oluşturur. bunun da arkasına çizgi ekleyip arkasına da yüklenme milisaniyesini ve bir guid ekler. ÖNEMLİ. ÖZEL KARAKTERLER İÇİN BOŞLUK DEĞİL ÇİZGİ KULLANDIM. ÇÜNKÜ BAZI DOSYA ADLARINDA "." NOKTA OLABİLİYOR. MESELA DR.SİNA.JPG KODUN BAŞI AŞAĞIDA. lower ve trim eklemeyi unutmayın ki tüm karakterler küçük harfe dönüşüp kelime baş ve sonundaki boşlukları da silelim. name.ToLower().Trim().Replace("\"", "-").Replace(" ", "-").............. Örnek: "zoro------ asdas ------ akjsdjaa.jpg" adındaki dosyayı "zoro-asdas-akjsdjaa.jpg" dönüştürür. En sonuna da yüklendiğin anının milisaniyesini ve guid bir değer de ekler. Dosya adınız ----------aaksjdkas---------------.jpg gibi bir şeyse onu da düzgün ekler. Çok uğraştım yav ama yaptığımdan daha pratik ve güzel bir yol varsa alırım bir dal :) Hocamıza da teşekkürler. Ankaradaymış bir ara çay ısmarlayayım kendisine ^_^ async Task RenameFileAsync(string path, string fileName) { string lastFileName = await Task.Run(async () => { string tire = "-"; string extension = Path.GetExtension(fileName); string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName); string firstFileName = RenameService.CharacterRegulatory(fileNameWithoutExtension); // firstFineName elde edilirken tüm özel karakterler ve tüm boşluklar "-" 1 çizgi ile değiştirilir. // Dosya adında birden fazla çizgi yan yana gelirse aşağıdaki döngü ile tek çizgiye dönüştürülürler. while (firstFileName.Contains("--")) { firstFileName = firstFileName.Replace("--", tire); } // ismin sonunda 1 çizgi yoksa aşağıda ekleyelim. Arkasına unique olması için guid falan ekleyeceğiz. if (!firstFileName.EndsWith(tire)) { firstFileName = firstFileName + tire; } // aşağıda dosyamızın son adını oluşturacağız. dosya adının sonuna 1 çizgi ekledik. Guid guid = Guid.NewGuid(); string lastFileName = $"{firstFileName}{DateTime.Now.Millisecond + tire}{guid}{extension}"; // en son dosya adımızın ilk karakteri belki çizgi olabilir diye onu da kaldırmamız lazım. Aşağıda kaldırdık onu da. if (lastFileName.StartsWith(tire)) { lastFileName = lastFileName.Substring(1); } // dosyanın varlığını kontrol ettik. Bunu sırf metot await istediği için ekledim. Bu olmayınca hata veriyor. Burada çözüm bulamadım başka. if (File.Exists($"{path}\\{lastFileName}")) { return await RenameFileAsync(path, lastFileName); } else { return lastFileName; } }); return lastFileName; }
@fatihdeniz37022 жыл бұрын
Aslinda temelden Regex kullanilarak isimlendirme sorunu daha da basite indirilebilirdi. /* Resmin uzantısı fileExtension adlı değişkene atanır. */ string fileExtension = Path.GetExtension(imageFile.FileName); //.png Regex regex = new Regex("[*'\",+-._&#^@|/~]"); //name = regex.Replace(name, string.Empty); // burada string.Empty ile regex degerlerinden gelen karakterleri resimden kaldirilir name = regex.Replace(name, "_"); DateTime dateTime = DateTime.Now; /* // Parametre ile gelen değerler kullanılarak yeni bir resim adı oluşturulur. // Örn: Product_601_5_38_12_28_09_2021.png //string fileName = $"{UserName}_{dateTime.FullDateAndTimeStringWithUnderscore()}_{fileName2}"; */ string newFileName = $"{name}_{dateTime.FullDateAndTimeStringWithUnderscore()}{fileExtension}"; Seo icin newFileName de baska bir isimlendirme yolu izlenebilir.
@sinanfen Жыл бұрын
Hocam bu kadar algoritma geliştirmek yerine ben farklı bir projemde şunu kullanmıştım. string newFileName = $"{name}_{dateTime.FullDateAndTimeStringWithUnderscore()}{fileExtension}"; Bu metod ise şu şekilde eşsiz bir dateTime dönüyor. public static string FullDateAndTimeStringWithUnderscore(this DateTime dateTime) { return $"{dateTime.Millisecond}_{dateTime.Second}_{dateTime.Minute}_{dateTime.Hour}_{dateTime.Day}_{dateTime.Month}_{dateTime.Year}"; }
@musauyumaz7787 Жыл бұрын
Hocam öğretmenler gününüz kutlu olsun bende şöyle bir değişiklik katmak istedim sizlerin algoritmasına protected delegate bool HasFile(string pathOrContainerName, string fileName); protected async Task FileRenameAsync(string pathOrContainerName, string fileName, HasFile hasFileMethod) { string extension = Path.GetExtension(fileName); string changedFileName = $"{NameOperation.CharacterRegulatory(Path.GetFileNameWithoutExtension(fileName))}{extension}"; if (!hasFileMethod(pathOrContainerName, changedFileName)) return changedFileName; string newFileName = Path.GetFileNameWithoutExtension(changedFileName); if (int.TryParse(newFileName[newFileName.Length - 1].ToString(), out int sayi) && newFileName.EndsWith($"-{sayi}")) { sayi++; newFileName = $"{newFileName.Remove(newFileName.IndexOf("-"))}-{sayi}"; changedFileName = newFileName + $"{extension}"; } else changedFileName = newFileName + "-1"; return await FileRenameAsync(pathOrContainerName, changedFileName, hasFileMethod); }
@MuratFirtina Жыл бұрын
Bir çok yorumda ki en faydalı kodları ve biraz da kendi yorumu mu ekleyerek aşağıda ki kodu hazırladım. Ayrıca NameServicede ki replace leri arttırdım. ama ı harfi hariç diğer hiçbir Türkçe karakteri İngilizce karaktere çevirmiyor anlamadım ?? Ama ne başta ne sonda ne ortada saçma karakter barındırmıyor. Dosya adınında ara boşluk varsa "-" ile dolduruyor. Çözemediğim şekilde bazı karakterleri silebilmek için birkaç yöntemi aynı anda kullanmam gerekti. Rider dan mı bilemedim. @Zneam @Yaşar Tuna Zorlu ve @FATİH DENİZ ' ve @GencayYildiz hocama teşekkürler. private async Task FileRenameAsync(string path,string fileName) { string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); oldName = oldName.ToLower().Trim('-', ' '); //harfleri küçültür ve baştaki ve sondaki - ve boşlukları siler char[] invalidChars = { '$', ':', ';', '@', '+', '-', '_', '=', '(', ')', '{', '}', '[', ']' ,'∑','€','®','₺','¥','π','¨','~','æ','ß','∂','ƒ','^','∆','´','¬','Ω','√','∫','µ','≥','÷','|'}; //geçersiz karakterleri belirler. oldName = oldName.TrimStart(invalidChars).TrimEnd(invalidChars); //baştaki ve sondaki geçersiz karakterleri siler //Regex regex = new Regex("[*'\",+._&#^@|/~]"); string regulatedFileName = NameOperation.CharacterRegulatory(oldName); //string newFileName = regex.Replace(regulatedFileName, string.Empty);//geçersiz karakterleri siler ve yeni dosya ismi oluşturur. DateTime datetimenow = DateTime.UtcNow; string datetimeutcnow = datetimenow.ToString("yyyyMMddHHmmss");//dosya isminin sonuna eklenen tarih bilgisi string fullName = $"{regulatedFileName}-{datetimeutcnow}{extension}";//dosya ismi ve uzantısı birleştirilir ve yeni dosya ismi oluşturulur. return fullName; }
@muammerkaraca78832 жыл бұрын
Ben daha yeni başladım eğtime, belki ileride kod parçası değiştirilmiştir ancak yine de şöyle bir çözüme gittim, daha sonra izleyecek olursa diye bırakıyorum. private string FileRenameAsync(string path, string fileName) { int index = 0; string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); string seaoFriendlyName = HelperClass.SeoFriendly(oldName); string newFileName = $"{HelperClass.SeoFriendly(seaoFriendlyName)}{extension}"; while (true) { index++; if (File.Exists(Path.Combine(path, newFileName))) newFileName = seaoFriendlyName + $"-{index}{extension}"; else break; } return newFileName; }
@zneam2 жыл бұрын
Kodun bende NameOperation'a dönmesi sıkıntı veriyordu @Yaşar Tuna Zorlu ve @FATİH DENİZ abimizin paylaşmış olduğu kod'u da okuyunca class oluşturmak yerine regexi ekleyip devam etmek daha kolay ve mantıklı geldi yani oluşturmuş oldukları kodu bir tık ileriye taşımaya çalıştım. Saygılarımla. async Task FileRenameAsync(string path, string fileName) { string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); Regex regex = new Regex("[*'\",+-._&#^@|/~]"); string newFileName = regex.Replace(oldName, string.Empty); DateTime datetimenow = DateTime.UtcNow; string datetimeutcnow = datetimenow.ToString("yyyyMMddHHmmss"); string fullName = $"{datetimeutcnow}-{newFileName}{extension}"; return fullName; } Ayrıca aynı dosyalar farklı vakitlerde yükleneceği için kodu gereksiz ağırlıktan kurtarmak istedim.
@sametfatih7707 Жыл бұрын
CharacterRegulatory fonksitonunu bu şekilde düzenledim temel olarak aynı işlemi yapıyor. Farklı bir syntax'da çözüm isteyenler kullanabilir. public static string CharacterRegulatory(string name) { string source = @"ığüşöçĞÜŞİÖÇâß\!'^+%&/()=?_@€¨~,;:|. "; string destination = @"igusocGUSIOC --"; for (int i = 0; i < source.Length; i++) { name = name.Replace(source[i], destination[i]); } return name; }
@tunazorlu2 жыл бұрын
Ben şu şekilde tarih tagını önde yazarak çözmek istedim. async Task FileRenameAsync(string path, string fileName) { string newFileName = await Task.Run(async () => { string extension = Path.GetExtension(fileName); string oldName = Path.GetFileNameWithoutExtension(fileName); DateTime datetimenow = DateTime.UtcNow; string datetimeutcnow = datetimenow.ToString("yyyyMMddHHmmss"); string newFileName = $"{datetimeutcnow}{NameOperation.CharacterRegulatory(oldName)}{extension}"; if (File.Exists($"{path}\\{newFileName}")) return await FileRenameAsync(path, newFileName); else return newFileName; }); return newFileName; }
@furkan39462 жыл бұрын
Merhaba, dosya adına date ekledikten sonra if ile dosya var mı kontrolü yapmamız neden gerekiyor? if bloğunu kaldırarak da düzgün çalışıyor ancak bu sefer metot asenkron olmamış oluyor. Yardımcı olur musunuz rica etsem?
@omeresinyildiz Жыл бұрын
Böyle bir kod yazdım lakin, file klasör içerisinde olmayanı bulana kadar dönüyor. Bazı durumlarda zaman alabilir. private async Task FileRenameAsync(string path, string fileName) { return await Task.Run(async () => { //TODO: File system ilk olarak gelen filename var mı diye bakabiliriz. string extension = Path.GetExtension(fileName); string nameWithOutEx = Path.GetFileNameWithoutExtension(fileName); // string oldName = String.Concat(Path.GetFileNameWithoutExtension(fileName), "-", num); string newFileName =NameOperation.CharacterRegulatory(nameWithOutEx); if (File.Exists($"{path}\\{newFileName}{extension}")) { var subString = newFileName.Substring(newFileName.LastIndexOf("-") + 1); var isNumber = int.TryParse(subString, out int number); if (!isNumber) { newFileName = newFileName.Insert(newFileName.Length, "-"); newFileName = String.Concat(newFileName, ++number); } else { newFileName = String.Join('-',newFileName.Split('-')[0], ++number); } return await FileRenameAsync(path, String.Concat(newFileName, extension)); } return $"{newFileName}{extension}"; }); }