0

Я создал два files, один из них - это строка меньше (временная), и я хотел бы удалить оригинал и содержимое временной замены оригинала. renameTo не работает, я не знаю, почему:/или какой-то совсем другой способ это сделать?Переместить содержимое одного файла в другой

Удалить линию:

ArrayAdapter<String> adapter = (ArrayAdapter<String>) listViewZaznam.getAdapter(); 

    FileInputStream inputStream = openFileInput(String.valueOf(oldfile)); 

    InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

    FileOutputStream fileout = openFileOutput(String.valueOf(newfile), MODE_APPEND); 
    OutputStreamWriter outputWriter = new OutputStreamWriter(fileout); 


    String currentLine; 

    while((currentLine = bufferedReader.readLine()) != null) { 

     String trimmedLine = currentLine.trim(); 
     if(trimmedLine.equals(removethisline)) { 
      adapter.remove(removethisline); 
      continue; 
     } 
     outputWriter.write(currentLine + System.getProperty("line.separator")); 

    } 

    outputWriter.close(); 
    bufferedReader.close(); 
    newfile.renameTo(oldfile); // ?? 

} 

Чтение из файла

ArrayAdapter<String> adapter = (ArrayAdapter<String>) listViewZaznam.getAdapter(); 
    try { 
     FileInputStream inputStream = openFileInput(String.valueOf(oldfile)); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

      String drziaciString = ""; 


      while ((drziaciString = bufferedReader.readLine()) != null) { 


       adapter.add(drziaciString); 
       listViewZaznam.setSelection(adapter.getCount() - 1); 
      } 
      inputStream.close(); 
     } 
    } catch (FileNotFoundException e) { 
     Log.e(TAG, "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e(TAG, "Can not read file: " + e.toString()); 
    } 

} 

EDIT Проблема решена :)

ответ

0

Переименование будет работать только на Linux (Android), если файлы находятся в одной файловой системе, оно смонтировано для чтения-записи и у вас есть доступ на запись к исходным и целевым каталогам.

Так, например, переименование не будет выполнено, если один файл находится на SD-карте, а другой - на внутреннем хранилище.

Может ли что-то подобное происходить в вашем случае?

Было бы интересно проверить, можно ли удалить файлы в качестве теста.

+0

Нет, оба файла находятся во внутреннем хранилище, и я могу удалить файлы ... Я использую deleteFile (файл) или существует какой-то режим, где я могу переписать файл, но не только одну строку (я думаю, MODE_PRIVATE)? – ficti

+0

Вы используете абсолютные пути? – formica

+0

'Файл oldfile = новый файл (« trasa.txt »);' no – ficti

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