2015-05-30 62 views
2

我有一個apk文件的數組,我需要做的是將ArrayList的apk文件寫入緩存存儲並以相同的ArrayList讀取它。我知道如何插入單個文件並從緩存中再次取回。但是,儘管ArrayList對象值得關注,但我完全堅持使用解決方案和方法。請幫幫我。我正在使用以下代碼讀取和寫入緩存內存。我的代碼中的任何修改或輕微更改都會對我更有幫助。在此先感謝寫入並讀取ArrayList <File>到Android緩存中

用於讀取和實際的代碼編寫單個文件

//Write to cache dir 

FileWriter writer = null; 
try { 
    writer = new FileWriter(tmpFile); 
    writer.write(text.toString()); 
    writer.close(); 

    // path to file 
    // tmpFile.getPath() 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

//Read to cache directory 
String TMP_FILE_NAME = "base.apk"; 
File tmpFile; 

File cacheDir = getBaseContext().getCacheDir(); 
tmpFile = new File(cacheDir.getPath() + "/" + TMP_FILE_NAME) ; 

String line=""; 
StringBuilder text = new StringBuilder(); 

try { 
    FileReader fReader = new FileReader(tmpFile); 
    BufferedReader bReader = new BufferedReader(fReader); 

    while((line=bReader.readLine()) != null ){ 
     text.append(line+"\n"); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
}catch(IOException e){ 
    e.printStackTrace(); 
} 

對我的要求修改後的代碼插入ArrayList<File>

String tempFile = null; 
public void writeFile(ArrayList<File> files(){ 

for(File file: files) { 
      FileWriter writer = null; 
      try { 
       writer = new FileWriter(file); 
       tempFile = file.getName().toString(); 
       writer.write(file.getName().toString()); 
       writer.close(); 

       // path to file 
       // tmpFile.getPath() 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
} 

這是我堅持完全閱讀as ArrayList

是我的嘗試是

String line=""; 
     StringBuilder text = new StringBuilder(); 

     try { 
      FileReader fReader = new FileReader(tempFile); 
      BufferedReader bReader = new BufferedReader(fReader); 

      while((line=bReader.readLine()) != null ){ 
       text.append(line+"\n"); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 

回答

0

我發現我自己的,我的問題的答案從blog一個longstruggle之後。

寫一個ArrayList<File>

public static void createCachedFile (Context context, String key, ArrayList<File> fileName) throws IOException { 

     String tempFile = null; 
     for (File file : fileName) { 
      FileOutputStream fos = context.openFileOutput (key, Context.MODE_PRIVATE); 
      ObjectOutputStream oos = new ObjectOutputStream (fos); 
      oos.writeObject (fileName); 
      oos.close(); 
      fos.close(); 

     } 
    } 

要在我的活動看了ArrayList<File>

public static Object readCachedFile (Context context, String key) throws IOException, ClassNotFoundException { 
     FileInputStream fis = context.openFileInput (key); 
     ObjectInputStream ois = new ObjectInputStream (fis); 
     Object object = ois.readObject(); 
     return object; 
    } 

最終代碼

createCachedFile (MainActivity.this,"apk",adapter.getAppList()); 

ArrayList<File> apkCacheList = (ArrayList<File>)readCachedFile (MainActivity.this, "apk");