2016-12-22 3 views
0

сейчас i've получили эти два массива, которые я хочу сохранить в файлезапись/чтение массивов в файлах Android

int var[][] = new int var[6][3] 
int var_2[][] = new int var[7][5]; 

Так Что лучший способ, чтобы написать этот код в файл?

я видел некоторые примеры как этот

try { 
    ObjectOutputStream objOut = new ObjectOutputStream(new 
    FileOutputStream("data.dat")); 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
    objOut.close(); 
    } 
catch (Exception e) { 
e.printStackTrace(); 
} 

я делаю это право? И если я, то как тогда я читаю это право на мои переменные?

ответ

0

Вы делаете это правильно, но есть возможности для улучшения. Во-первых, вы должны использовать средство регистрации Android (android.util.Log), а не e.printStackTrace(). Кроме того, если ваш minSdkLevel является 19 или больше, я рекомендую вам использовать try-with-resources заявление:

try (ObjectOutputStream objOut = new ObjectOutputStream(new 
    FileOutputStream("data.dat"))) 
{ 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
} catch (Exception e) { 
    Log.e(LOG_TAG, "Could not save data", e); 
} 

(LOG_TAG лишь некоторые String вы определяете, чтобы определить выход вашего класса.) Если вы не можете использовать примерочные с -ресурсы, я рекомендую использовать пункт finally закрыть поток:

ObjectOutputStream objOut = null; 
try { 
    objOut = new ObjectOutputStream(new FileOutputStream("data.dat")) 
    objOut.writeObject(var_1); 
    objOut.writeObject(var_2); 
} catch (Exception e) { 
    Log.e(LOG_TAG, "Could not save data", e); 
} finally { 
    if (objOut != null) { 
     try { 
      objOut.close(); 
     } catch (Exception e) { 
      Log.e(LOG_TAG, "Could not close output file", e); 
     } 
    } 
} 

Это гарантирует, что выходной поток закрывается, даже если исключение в вызовах writeObject.

Чтобы прочитать данные, просто откройте ObjectInputStream в тот же файл и прочтите данные в том же порядке, в котором вы их ввели.

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