2012-10-19 65 views
0

我有一些應用程序特定的文件,這些文件存儲在內部存儲器的目錄中。我希望用戶能夠通過對話框重命名這些文件。我正在使用以下代碼重命名用戶選定的文件:在Android內存中的目錄中重命名文件?

final File dir = context.getDir(UtilityFuctions.USER_LISTS, 
       Context.MODE_PRIVATE); 
     final File myFile = new File(dir, filename); 

     AlertDialog.Builder fileDialog = new AlertDialog.Builder(context); 
     fileDialog.setTitle("Rename file"); 

     // Set an EditText view to get user input 
     final EditText input = new EditText(context); 
     input.setText(filename); 
     fileDialog.setView(input); 
     fileDialog.setPositiveButton("Ok", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         String fileName = input.getText().toString(); 

          myFile.renameTo(new File(dir,filename)); 
          UtilityFuctions.createToast(context, "file rename successfully", 0); 
         } 
        } 
       }); 
     fileDialog.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         // Canceled. 
         dialog.dismiss(); 
        } 
       }); 
     fileDialog.create(); 
     fileDialog.show(); 

但是上面的代碼不工作,文件沒有得到新的名稱。我想renameTo不會爲此工作,它只會用於externalmemory。我有一個解決方案,我可以用新名稱創建一個現有文件的副本,並刪除舊文件,但這會消耗資源,我不想這樣做。請幫助我,如果我做錯了什麼事情..

+0

只是一個猜測;沒有實驗證據呢。如何運行一個Linux命令,「mv oldfullpath newfullpath」? –

+0

我沒有得到你.....我想在java(Android)中執行此操作 – Anshul

+0

沒錯,我的意思是 - 但沒有親自嘗試 - 從Android應用程序運行Linux命令,如下所示:http:/ /stackoverflow.com/questions/3350283/any-way-to-run-shell-commands-on-android-programmatically。 –

回答

2

這應該工作 - 你創建的問題是你有兩個變量稱爲文件名和文件名。

我敢肯定的基本問題是,你想這行:

myFile.renameTo(new File(dir,filename)); 

實際閱讀

myFile.renameTo(new File(dir,fileName)); 

明確你想要做新返回的文件名重命名(在本地文件名中),而不是存儲在文件名中的原始文件名(不變)。

+0

哦哦......我怎麼能這麼蹩腳犯錯...... – Anshul

+1

我們都犯錯誤 - 那是一個很難看到自己的錯誤 – Elemental

+0

感謝夥計注意到這個問題......你救了我 – Anshul

相關問題