2014-01-19 3 views
0

Android 디바이스에 객체를 저장할 수 있지만 가져 오는 데 문제가 있습니다. 이러한 객체 내의 데이터는 사용자가 설정합니다 (예 : String name, int day, ect). 이 오브젝트들은 저장되고 (키는 이름이 됨) 검색된 다른 활동에 저장됩니다. 나는 새로운 활동에서 나는 그것의 이름이 사용자에 의해 결정되지 않기 때문에 그들을 찾을 수 없다. (다른 클래스에서 수행) 오브젝트 나는 새로운 활동에있어 이후, 나는 아무 생각이Android : FileOutputStream과 함께 저장된 객체에 액세스하는 방법

FileInputStream fStream = context.openFileInput(//where the name of the object should be, here's where I'm stuck); 
    ObjectInputStream oStream = new ObjectInputStream(fStream); 
    person = oStream.readObject(); 

를 검색하려면 저장소 개체 (개체 = 사람)으로

FileOutputStream fStream = context.openFileOutput(name,Context.MODE_PRIVATE); 
    ObjectOutputStream oStream = new ObjectOutputStream(fStream); 
    oStream.writeObject(person); 
    oStream.close(); 
    fStream.close(); 

무엇 사용자는 자신의 이름을 미리 정했습니다. 사용자가 미정의 금액을 만들고 지속적으로 사람들을 추가하고 삭제하기 때문에 단순히 "사람"이라는 키의 이름을 지정할 수는 없습니다. 저장된 객체의 양을 계산하거나 저장된 객체의 이름 목록을 가져 오는 방법이 있다면 문제가 해결됩니다.

+1

몇 가지 방법이 있습니다. 이름을 추적하고 번들에서 새로운 활동으로 전달하거나 아래 @ longwalker의 코드를 사용할 수 있지만 파일이 저장되는 내부 파일 디렉토리를 검색하도록 첫 번째 행을 변경하십시오. 따라서 getFilesDir()을 사용해야합니다. 다음을 참조하십시오 : https://developer.android.com/reference/android/content/Context.html#getFilesDir() – Luis

+1

또는 fileList()를 사용하십시오. 참조 : https://developer.android.com/reference/android/content/Context.html#fileList() – Luis

+0

Leco의 의견이 내 문제를 해결했습니다! 고마워 남자 – David

답변

1

특정 디렉토리의 파일 목록을 가져 오는 중이라고 가정합니다. 다음과 같이 할 수 있습니다.

// Get local files 
File directory = new File(Environment.getExternalStorageDirectory().toString() + localDir); 

File[] listOfLocalFilesArray = directory.listFiles(); 

// get the names of files 
String[] fileArray = new String[listOfLocalFilesArray.length]; 
for (int i = 0; i < listOfLocalFilesArray.length; i++) { 
fileArray[i] = listOfLocalFilesArray[i].getName(); 
} 
+0

localDir에 무엇을 넣을까요? – David

+1

파일을 저장할 때 디렉토리가 무엇이든간에! 외부 저장소 루트 디렉토리에 파일을 저장 한 경우'Environment.getExternalStorageDirectory(). toString()'을 사용하십시오. –

+0

알아두면, 저장된 "사람"개체의 디렉토리가 무엇인지 알 수 있습니까? 현재 fileArray를 출력하면 "Android, Music, Podcasts, ..., DCIM"이 표시됩니다. 지금까지 모든 도움을 주셔서 감사합니다! – David

관련 문제