2014-01-06 4 views
0

Мне нужно переименовать имя файла для приложения Android. Я написал код внутри onListItemClick(), но он не работает. У меня тоже не было никаких исключений. Вот код. Какая здесь ошибка?Android-код для переименования файла

File oldFile = new File(path.get(position)); 
     String oldFileName=path.get(position); 
     Toast.makeText(this, path.get(position), Toast.LENGTH_LONG).show(); 
     String segments[]=oldFileName.split("/"); 
     String fileName=segments[segments.length-1]; 
     String newFileName=oldFileName.replace(fileName, "log_B.txt"); 
     File newFile=new File(newFileName); 


    if(!oldFile.isDirectory()){ 

     System.out.println("File Name is:"+fileName); 

     try{ 
      if(oldFile.renameTo(newFile)){ 
       System.out.println("File renamed successfull !"); 

      }else{ 
       System.out.println("File renamed operation failed"); 
      } 


     }catch(Exception ex){ 
      System.out.println("Exception :"+ex.getMessage()); 
     } 

    }else{ 

     System.out.println("Folder Name is :"+fileName); 

    } 
+2

Давайте посмотрим вывод, который вы получите. –

+0

Я получаю «Ошибка переименования файла» и не получаю никакого исключения. Я попытался сделать это, указав путь как «Environment.getExternalStorageDirectory()». Но все равно получить тот же результат. – IBunny

ответ

0

Убедитесь, что вы имеете права на запись, определенные в файле манифеста:

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

Метод File.renameTo() потерпит неудачу при следующих условиях: требуется

  • Разрешение на запись в каталогах, содержащих как исходные, так и целевые пути .
  • Разрешение поиска требуется всем родителям обоих путей.
  • Оба пути находятся в одной точке монтирования. На Android приложения скорее всего ударят это ограничение при попытке скопировать между внутренним хранилищем и SD-картой.

Как описано в документации: http://developer.android.com/reference/java/io/File.html#renameTo(java.io.File)

Кроме того, я хотел бы убедиться, что путь NewFile является то, что вы ожидаете, что это будет.

+0

Могу ли я изменить разрешение файла с кодом? Или как это сделать? – IBunny

+0

Вообще-то нет. Если ваше приложение не имеет системных привилегий. Ваше приложение имеет доступ только для записи в общедоступные каталоги, такие как внешнее хранилище SD, или его внутренний каталог. См.: Http://developer.android.com/training/basics/data-storage/files.html – TheIT

+1

О, спасибо :) глупая ошибка, После того, как я добавлю « ", чтобы файл манифеста работал нормально. – IBunny

Смежные вопросы