2014-10-08 3 views
0

Я работаю над мобильным приложением, в котором я сохраню сгенерированные значения в файлах. Я сохранил файл, и файл также сохраняется в папке. Но после выхода из приложения, когда я открываю файл и пытаюсь читать значения, он не читает файл. Фактически файлы хранятся в памяти устройства не на внешнем устройстве. Я дал разрешения в файле манифеста.Хранение файлов и папок с помощью android

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

Здесь я прилагаю код. Пожалуйста, объясните мне, какую ошибку я сделал. // здесь я храню две данные

public void setData(String newData , String newTime , String fileName) throws JSONException { 
    try { 
    //FileOutputStream fou = openFileOutput("text.txt", MODE_WORLD_READABLE); 
    File sdcard = android.os.Environment.getExternalStorageDirectory(); 
    File directory = new File(sdcard.getAbsolutePath()+ "/MyDirectory"); 
    directory.mkdirs(); 
    File file = new File(directory,fileName); 
    FileOutputStream fou = new FileOutputStream(file , true); 
    OutputStreamWriter osw = new OutputStreamWriter(fou); 
    try { 
    osw.write(String.valueOf(newData)); 
    osw.append(','); 
    osw.write(String.valueOf(newTime)); 
    osw.write(System.lineSeparator()); 
    osw.close(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
    } 

// Здесь я читаю содержимое файла, которые сохраняются в мобильном устройстве

@TargetApi(Build.VERSION_CODES.KITKAT) 
    @JavascriptInterface 
    public String ReadFile(String fileName) 
    { 
    String content; 
    ArrayList<String> arr = new ArrayList<String>(); 
    //int linenumber = 0; 
    File sdcard = android.os.Environment.getExternalStorageDirectory(); 
    File directory = new File(sdcard.getAbsolutePath()+ "/MyDirectory"); 
    //File directory = new File(sdcard.getAbsolutePath()+ "/MyDirectory"); 
    //File f = new File(""); 
    Log.d(TAG, "acrd checking called"); 
    System.out.println(sdcard.getAbsolutePath()); 
    File file = new File(directory,fileName); 
    try (InputStream fis = new FileInputStream(file)) { 
    BufferedReader br=new BufferedReader(new InputStreamReader(fis)); 
    //char stringComma = new Character(','); 
    while ((content = br.readLine()) != null) { 
    // convert to char and display it 
    Log.d(TAG, "called"); 
    arr.add(content); 
    Log.d(TAG, "called"); 
    System.out.println(arr); 
    } 
    br.close(); 
    } 
    catch (IOException e) { 
    e.printStackTrace(); 
    } 
    return arr.toString(); 
    } 

Что может быть проблема?

+0

Любые ошибки? Или файл просто пуст? – ToYonos

+0

Ошибка. Его сохранение значений и чтение из него. Но не хранить на внешнем устройстве. И если я закрою приложение и откройте его, и если я попытаюсь прочитать его содержимое, то не прочитав – user3335796

ответ

0

при использовании класса файлов часто путем изменения File.separator вместо/проблема решена. уведомление, в файле и базе данных вам нужно закрыть его, когда ваша работа будет завершена.

+0

, я понимаю. Вы можете объяснить немного больше? – user3335796

1

Вы должны закрыть Output stream, как fou.close() после того как вы закончили писать

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