2010-05-24 15 views
11

Android uygulamasında, çalışma zamanında dosya adını yeniden adlandırmak istiyorum. Nasıl yapabilirim?Android uygulamasıyla sdcard'daki bir dosya nasıl yeniden adlandırılır?

String[] command = {" mv", "sun moon.jpg"," sun_moon,jpg"}; 
try 
{ 
    Process process = Runtime.getRuntime().exec(command); 
} 
catch (IOException e) 
{ 
    Toast.makeText(this, ""+e, Toast.LENGTH_LONG).show(); 
} 

Ben de renameTo (Dosya f) yöntemi kullanılmıştır ama çalışmıyor:

Bu

benim kodudur.

+0

Ziyaret: http://stackoverflow.com/questions/9065514/move-rename- Aşağıda

benim kod parçacığı olduğunu file-in-sd-kart –

+1

İnsanların size yardım etmesini istiyorsanız cevapları kabul etmelisiniz, FYI – Gattsu

cevap

81

Ben ikinci desteklenmez oldukça eminim beri

Eğer application permission to write to the SD Card verdik .., File.renameTo() kullanarak yerine mv komutunu çalıştırarak önerirsiniz?

Sen adding the following to your AndroidManifest.xml bunu: iznini adb komutunu kullanarak veya ya (dosyayı yeniden adlandırmak çalıştığınızda hatalar için cihaz günlüğüne bakın eklendikten sonra

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

işe yaramazsa logcat Eclipse'de görüntüle.

SD Kart'a erişirken, yolu sabit kodla yazmamalı, bunun yerine dizini almak için the Environment.getExternalStorageDirectory() yöntemini kullanmalısınız.

File sdcard = Environment.getExternalStorageDirectory(); 
File from = new File(sdcard,"from.txt"); 
File to = new File(sdcard,"to.txt"); 
from.renameTo(to); 

ve İşlemi kontrol etmek istiyorsanız gibi yapabileceğiniz:

Aşağıdaki kod benim için çalışıyor sen de açıkça dizini belirtmeden tam yolunu verebilir

boolean renamed = from.renameTo(to); 

if (renamed) { 
    Log.d("LOG","File renamed..."); 
}else { 
    Log.d("LOG","File not renamed..."); 
} 
+0

Şimdi deneyin Dosya f1 = new Dosya ("/ sdcard/sun moon.jpg"); Dosya f2 = yeni Dosya ("/ sdcard/soon_moon.jpg"); \t { \t f1.renameTo (f2); \t} yakalamak (Özel durum e) \t \t Toast.makeText (bu, "" + e, Toast.LENGTH_LONG) .show(); \t \t} ve izin kullanmak AndroidManifest.xml dosya ama yine de herhangi bir değişiklik yoktur. – Addy

+0

Logcaat – Addy

+0

içinde hiç hata yok Cevabımı güncellenen kodla güncelledim.RenameTo(), çalıştırdığınızda "true" veya "false" döndürüyor mu? Eğer 'false' döndürürse, 'f1.exists()' ne döndürür? –

5

...

File file = new File("Path of file which you want to rename"); 
File file2 = new File("new name for the file"); 
    boolean success = file.renameTo(file2); 
0

İzin eklemeye çalıştım. Çalışmamasına rağmen, File1.setWritable(true); eklenmesi, dosyayı yeniden adlandırmamı sağladı. [Bu bir] [1] [1]

if(from.setWritable(true)) 
    Log.d("InsertFragmentTwo ", "FileName==> Is Writable"); 
File two = new File(sdcard,""+imageCount+"."+s.substring((s.lastIndexOf(".")+1))); 
if (from.renameTo(two)) { 
    Log.d("InsertFragmentTwo ", "New FileName==> " + temp); 
    imageCount++; 
    retrofitImageUpload(temp); 
} else 
    Log.d("InsertFragmentTwo ", "File Renaming Failed"); 
İlgili konular