2012-02-14 1 views
2

Я устал возиться. И я начинаю верить, что на самом деле это невозможно. Где я могу найти простой пример, показывающий, как написать файл «myPath/myFile.txt»? А потом прочесть его снова?Мне нужен пример, показывающий, как читать и писать файл, включая путь к внутреннему хранилищу Android

Этот пример кода блока, который я не могу заставить работать:

if(pathExists(path, ctx)) 
{ 
File file = new File(ctx.getFilesDir().getAbsolutePath() +"/" + path, fileName); 
FileInputStream fIn = new FileInputStream(file); 

InputStreamReader isr = new InputStreamReader(fIn); 

StringWriter writer = new StringWriter(); 
IOUtils.copy(fIn, writer, "UTF-8"); 
fileStr = writer.toString(); 
} 

Это ошибка, что я получаю:
«java.io.IOException: Является ли каталог»

+1

Используйте эту помощь ссылку http://developer.android.com/guide/topics/data/data-storage.html#filesInternal – Relsell

+0

прочитать этот блог [ссылка] (HTTP: //android-er.blogspot .in/2011/10/read-file-from-internal-storage-via.html) – Deepak

ответ

0

Вы не можете писать на внутреннем хранилище Android (если только ваше устройство не внедрено), за исключением частного файлового пространства, назначенного вашим собственным приложением системой Android.

+0

_определение из личного файлового пространства, назначенного вашему собственному приложению системой android. Я пишу в личное файловое пространство. Это то, что я пытаюсь сделать. – DevNull

+0

Извините за форматирование. Не могу получить, чтобы работать как: (( Этот пример кода блока, который я не могу заставить работать: если (pathExists (путь, CTX)) {файл File = новый файл (CTX . .getFilesDir() getAbsolutePath() + "/" + путь, имя_файла); FileInputStream FIN = новый FileInputStream (файл); \t \t \t \t InputStreamReader ISR = новый InputStreamReader (FIN); \t \t \t \t StringWriter writer = new StringWriter(); IOUtils.copy (fIn, writer, "UTF-8"); fileStr = writer.toString(); } Это ошибка, которую я получаю: «java.io.IOException: есть ли каталог» – DevNull

0
String strfile1 = getApplicationContext().getFilesDir().getAbsolutePath() + "/serstatus.txt" ; 

File f1 = new File(strfile1); 
0

Вы должны использовать методы сериализации, как в java. , чтобы сохранить текст как файл, вы должны использовать FileOutputStream, и чтобы прочитать файл, вы должны использовать FileInputStream. Вы можете проверить следующий код: у него есть простой редактор и две кнопки для сохранения, а одна - для чтения данных, сохраненных в этом файле.

Следующий код предназначен для сохранения текста в файле с именем raksi.

Button savebutton = (Button)findViewById(R.id.but); 
savebutton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     e= (EditText)findViewById(R.id.edit); 
     StringBuffer sb = new StringBuffer(); 
     sb.append(e.getText().toString()); 
     String s = sb.toString(); 
     try { 
      final String TESTSTRING = new String(s); 
      FileOutputStream fOut = openFileOutput("raksi.txt",MODE_WORLD_READABLE); 
      OutputStreamWriter osw = new OutputStreamWriter(fOut); 
      osw.write(TESTSTRING); 
      ll = TESTSTRING.length(); 
      osw.flush(); 
      osw.close(); 
     }catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 
}); 

Следующий код - это прослушиватель кликов для кнопки get. считывает данные из файла и отображает как тост,

Button b1 = (Button)findViewById(R.id.but1); 
b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    try{ 
     FileInputStream fIn = openFileInput("name.txt"); 
     InputStreamReader isr = new InputStreamReader(fIn); 
     char[] inputBuffer = new char[ll]; 
     isr.read(inputBuffer); 
     String readString = new String(inputBuffer); 
     Toast.makeText(getApplicationContext(), readString, Toast.LENGTH_LONG).show(); 
    } 
    catch(IOException e){ 
    // TODO: handle exception 
    } 
+0

Этот пример, похоже, не обрабатывает пути. Ex. "folder1/folder2/name.txt" – DevNull

3

Это следующий фрагмент скопирует Вам файлы, которые сохраняются в пространстве приложения к нужному пути.

File mfile=new File("/data/data/src.com.file.example/files"); 
File[] list=mfile.listFiles(); 
    // The path where you like to save your files 
String extStorageDirectory = "/mnt/sdcard/backup/"; 


    File file23 = null; 
    File fr = null; 
    for(int i =0;i<list.length;i++){ 
File myNewFolder = new File(extStorageDirectory +list[i].getName().substring(0,5)); 

if(myNewFolder.exists()){ 

    String selectedFilePathq = "data/data/src.com.file.example/file/"+list[i].getName(); 
file23 = new File(selectedFilePathq); 
fr = new File(myNewFolder+"/"+list[i].getName()); 
}else{ 
    myNewFolder.mkdir(); 
String selectedFilePathq = "data/data/src.com.file.example/files /"+list[i].getName(); 
file23 = new File(selectedFilePathq); 
fr = new File(myNewFolder+"/"+list[i].getName()); 
} 



try { 
copy(file23,fr); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
} 








public void copy(File src, File dst) throws IOException { 
    InputStream in = new FileInputStream(src); 
    OutputStream out = new FileOutputStream(dst); 

    // Transfer bytes from in to out 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
    in.close(); 
    out.close(); 
} 
+0

Мне была нужна функция, которая записывала бы во внутреннюю память, а не из внешнего каталога. Решение находится здесь: http://stackoverflow.com/questions/9276745/is-it-possible-to-create-and-maintain-a-folder-structure-with-files-using-the-in/9279350 # 9279350 Но я буду держать вас в виду, когда мне нужно написать внешний каталог. Спасибо – DevNull

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