2011-08-13 4 views
0

안드로이드 게임 (andEngine 사용)에서 TMXtiled 맵을 개체로 저장하려고하고로드 시간을 절약하기 위해 나중에 호출합니다. 나는 SD 카드에서 파일을 가져올 수 있었지만 SD 카드에서 읽으려는 데 문제가 있습니다. 그런 다음저장된 개체가 sd 카드에서 읽히지 않습니다

File root = Environment.getExternalStorageDirectory(); 
FileOutputStream fos = new FileOutputStream(root + "/fileTest"); 
ObjectOutputStream oos = new ObjectOutputStream(fos); 
oos.writeObject(tmxLoader.loadFromAsset(mContext, "tmx/test.tmx")); 
oos.close(); 

내가 SD 카드에서 파일 읽기 위해 이것을 사용 :이 내가 파일을 작성하는 데 사용하는 코드입니다 널 포인터 예외,

FileInputStream in = new FileInputStream(root + "/fileTest"); 
ObjectInputStream os = new ObjectInputStream(in); 
mTMXTiledMap = (TMXTiledMap) os.readObject(); 
os.close(); 

내가 점점 계속 오류를하는 그 파일이 읽히지 않는다고 믿게 만들었습니다. 안드로이드에서 사용하기 전에 자바에서이 메서드를 테스트했지만 작동하지만 문자열을 사용하고있었습니다. 위의 코드에 문제가 있습니까? 또한 이러한 대형 객체를 저장하는 더 좋은 방법이 있습니까? 내가 알아챈 또 다른 사실은 SD 카드의 파일이 약 3KB 였지만, TiledMap이 DDMS를 사용하여 훨씬 많은 공간을 차지한다는 것을 보았습니다. 그래서 파일이 완전히 쓰여지지 않았다는 것을 의미합니까?

답변

2

나중에 나는 당신이이 문제를 해결할 수

FileInputStream in = new FileInputStream(root + "/test.tmx"); 

희망으로 확장자 즉, 전체 경로를 제공 hadnt하는 생각

+0

내가 모두 TMX로 테스트를 사용하기 때문에 위의 코드는 조금 비트 혼란 이름과 SD 카드에있는 파일의 이름. SD 카드에는 파일 확장자가 없습니다. 위 코드를 더 명확하게 편집 할 것입니다. – rioneye

+0

쓰기와 읽기 모두에서 확장 기능을 제공해야합니다. –

+0

일반 파일로 남겨 둘 수 없습니다. serializable을 구현 한 클래스에서 객체를 만든 경우 파일 이름이 중요하지 않다고 생각했습니다. – rioneye

관련 문제