Yalnızca QFile::rename() numaralı telefonu kullanın. Çoğu amaç için yaklaşık doğru olanı yapmalıdır. C++ standart kütüphanesi, dosya sistemi yeniden adlandırılmış bir aramaya sahip değil (lütfen yanılıyorsam yorumlarda beni düzeltin!), std::rename sadece tek dosya sisteminde hareket edebilir. Ancak, buradaki tek (ilgili) atomik dosya işlemi, dosya içeriğine dokunulmadığında aynı dosya sisteminde yeniden adlandırılır, sadece dizin bilgileri değişir. Bunun destekleyen bir C++ kütüphanesinin farkında değilim, işte kaba pseudocode var: Bu garanti gibi
if basic rename succeeds
you're done
else if not moving between file systems (or just folders for simplicity)
rename failed
else
try
create temporary file name on target file system using a proper system call
copy contents of the file to the temporary file
rename temporary file to new name, possibly overwriting old file
remove original file
catch error
remove temporary file if it exists
rename failed
de genişlemiş, bütün bir dosya seferde yeni konum göründüğünü de o dosya ve en kötü hasar tipleri kopyalama dahil dosya taşımak yerine.
Cevabım işe yarıyor mu? :) –
Qt doc diyor ki "(bool QFile :: rename (const QString & newName)) Yeniden adlandırma işlemi başarısız olursa, Qt bu dosyanın içeriğini newName'e kopyalamaya çalışır ve bu dosyayı yalnızca newName'i kullanmaya devam eder." Sürücüler farklıysa çalışmalıyım. – Kunal