2012-06-29 4 views
1

.txt файл необходимо сохранить на SD-карте.Сохраните файл на SD-карту

Save("n" + String.valueOf(key) + ".txt"); 

private void Save(String FileName){ 
     File fileName = null; 
     String sdState = android.os.Environment.getExternalStorageState(); 

     if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) { 
      File sdDir = android.os.Environment.getExternalStorageDirectory(); 
      fileName = new File(sdDir, "FlyNote/"+FileName); 
      } else { 
       fileName = context.getCacheDir(); 
      } 
     if (!fileName.exists()) 
      fileName.mkdirs(); 
     try { 
      FileWriter f = new FileWriter(fileName); 
      f.write(editText2.getText().toString()); 
      f.flush(); 
      f.close(); 
     } catch (Exception e) { 

     } 
    } 

Но в файле SD-карты сохраняется как папка. Папка «n5.txt» и другие ...

+0

, потому что вы используете fileName.mkdirs(); которые создают каталог имени файла, если он не существует. – rajpara

+0

fileName.mkdirs(); вы создаете каталог .. проверьте это http://stackoverflow.com/questions/11232148/how-to-read-data-from-a-sqllite-database-table/11232938#11232938 –

ответ

2

использование

File dir= new File(sdDir.getAbsolutePath(), "FlyNote"); 
dir.mkdirs(); //CREATE DIR HERE 
File file = new File(dir, FileName);//CREATE FILE HERE 

вместо

fileName = new File(sdDir, "FlyNote/"+FileName); 
0

При тестировании на существует, то вы ищете, если Flynote/Filename существует или нет, и если он не существует, вы создаете один, используя mkdirs.

fileName.mkdirs() создает каталог с именем этого файла. Следовательно, вы обнаружите ошибку. Ваш mkdirs должен быть только для Flynote и не Flynote/+FileName

0

Попробуйте это,

Если вы стремитесь к файлу, почему г пользуются «MkDir», что делает каталог не файл.

Этот код предназначен для создания файла:

File f = new File("/sdcard/n5.txt"); 
FileWriter fw = new FileWriter(f); 
BufferedWriter bw = new BufferdWriter(fw); 
bw.write("Hello"); 

Чтобы проверить, если папка существует ...

File f = new File("/sdcard/myfolder"); 
if (f.exists()){ 

    // do what u want 

    } 
else{ 
     // doesnt exists 
     } 
0

Большинство методов, приведенных здесь хорошо ... Вы также можете использовать следующий код:

public static void addToFile(String file,String message){ 

    try { 
     FileOutputStream fos = new FileOutputStream(file,true); 
     fos.write(("\n"+message).getBytes()); 
     fos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

Здесь «Файл» - это строка, которая содержит путь к вашему файлу, например: File = «/sdcard/parentPath/FileName.txt» и «message» для очевидного сообщения, которое вы хотите ввести в файл. (учитывая, что файл содержит содержимое txt)

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