4

我已經看到了如何使用這種方法來寫的內部存儲..寫在android系統對象的內部存儲(內新目錄)

public void storeSerializedObject(MyObject theObject) { 



     FileOutputStream fileOut = null; 
     String fileName = theObject.getName(); 
     try { 


      fileOut = context.getApplicationContext().openFileOutput(
        fileName + ".ser", Context.MODE_PRIVATE); 
      ObjectOutputStream out = new ObjectOutputStream(fileOut); 
      out.writeObject(theObject); 
      out.close(); 
      fileOut.close(); 

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

    } 

的事情是我希望把theObject在一些新的指定目錄。 然後最終搜索該目錄中的所有.ser文件,並反序列化每個對象。
所以基本上,你會怎麼做?

此外,使用上述方法進行文件存儲,有沒有辦法檢查默認的未命名位置的內容中的所有文件名列表?

+0

http://stackoverflow.com/questions/5017292/android-create-file-on -internal-storage –

+0

你想創建內部存儲文件的目錄? –

+0

基本上是的。但是,上面的代碼不允許您創建或更改您正在編寫的對象的目錄。 OpenFileOutput()我不認爲可以爲我正在嘗試做的工作。 –

回答

0

Context有幾種獲取內部文件和目錄的方法,您可能需要使用Context#getDir()

getDir("serfiles", Context.MODE_PRIVATE)應導致一個名爲
/data/data/your.package.name/app_serfiles

目錄中列出的文件中有使用File#list()File#listFiles()。再加上帶濾波器的情況下,你希望在特定的文件

private static File[] listSerFiles(Context context, String dirName) { 
    File dir = context.getDir(dirName, Context.MODE_PRIVATE); 
    return dir.listFiles(SER_FILTER); 
} 
private static final FileFilter SER_FILTER = new FileFilter() { 
    public boolean accept(File file) { 
     return file.isFile() && file.getName().endsWith(".ser"); 
    } 
}; 

而且你可以打開的OutputStream像

private static FileOutputStream getOutputStreamInDir(Context context, String dirName, String fileName) throws FileNotFoundException { 
    File dir = context.getDir(dirName, Context.MODE_PRIVATE); 
    File file = new File(dir, fileName); 
    return new FileOutputStream(file); 
} 
+0

你是先生,是上帝。 –