티스토리 뷰
cocos2d-x는 크로스 플랫폼인 2D게임 엔진으로 알려져있다.
그래서 보통은 일반적인 파일 입출력을 사용할시 프로그램 에러가 발생할 확률이 매우높다(99.99%).
그래서 코코스에서는 크로스 플랫폼을 대비해 파일 입출력을 할 수 있는 클래스를 만들어 두어 사용하게 해놨다.
포스팅은 cocos2d-x Document 페이지를 참고 하여 작성하였고.
(http://www.cocos2d-x.org/docs/api-ref/cplusplus/v3x/dc/d69/classcocos2d_1_1_file_utils.html)
또한 실제로 사용해본 함수 몇개와, 영어가 딸려(....)또는 이해가 안되는 함수, 잘 안쓰일꺼 같은거 제외하고 나열 해 보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | bool HelloWorld::init() { if ( !Layer::init() ) { return false; } char str[100]; FILE* fp = fopen("TextFile.txt","rt"); fgets(str,100,fp); fclose(fp); auto visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); return true; } | cs |
코코스에서 이런 코드를 작성할시 win32환경에서는 작동이 잘 된다..
잘은 모르겟지만 TexFile.txt 라던가 이미지 파일 같은 것들은 코코스가 visual studio 작업환경을 수정 해 놓아서 자동으로 Resource라는 폴더에 저장,읽기가 된다.
그러나 Android에서는 환경이 다르니 win32환경에서 처럼 마음대로 읽고,쓰기가 안되나 보다.
따라서.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | bool HelloWorld::init() { if ( !Layer::init() ) { return false; } char str[100]; std::string filePath =( FileUtils::getInstance()->getWritablePath()) + "TextFile.txt"; //읽기가 가능한 경로 얻기 FILE* fp = fopen(filePath.c_str(),"rt"); fgets(str,100,fp); fclose(fp); auto visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); return true; } |
위 코드와 같이 FileUtils라는 크로스 플랫폼에서도 사용가능한 싱글톤 객채를 이용하여서 디바이스의 읽기,쓰기가 가능한 경로를 가져와 그 경로를 이용해 파일을 여는 모습이다.
함수 목록
1. virtual std::string getWritablePath() const
일기,쓰기가 가능한 경로를 가져온다.
2. virtual void setWritablePath(const std::string& witablePath)
읽기, 쓰기를 할 경로를 지정한다.
3. void addSearchPath(const std::string& path, const bool front = false)
검색 경로를 추가 한다.
4. virtual const std::vector<std::string>& getSearchPaths() const
검색 경로들을 가져 온다.
5. virtual bool isFileExist(const std::string& filename) const
파일이 존재하는지 확인한다.
인자 값으로 오는 경로는 상대경로 또는 절대경로 일 수 있으며 만약 상대경로라면 디폴트 경로가 앞에 붙습니다.
파일이 존재한다면 true 없다면 false를 반환합니다.
6. virtual bool isDirectoryExist(const std::string& dirPath) const;
폴더가 존재하는지 확인한다.
인자 값으로 오는 경로는 상대경로 또는 절대경로 일 수 있습니다.
만약 존재한다면 반환값으로 true를 존재하지 않다면 false를 반환합니다.
7. virtual bool createDirectoty(const std::string& dirPath)
폴더를 생성한다.
인자 값으로 오는 경로는 무조건 절대 경로여야 합니다.
제대로 생성 되었다면 true값을 아니라면 false값을 반환합니다.
8. virtual bool removeDirectory(const std::string& dirPath)
폴더를 삭제한다.
인자 값으로 오는 경로는 무조건 절대 경로여야 합니다.
제대로 삭제 되었다면 true값을 아니라면 false값을 반환합니다.9. virtual bool removeFile(const std::string& filePath)
파일을 삭제한다.
인자 값으로 오는 경로는 무조건 절대 경로여야 합니다.
제대로 삭제 되었다면 true값을 아니라면 false값을 반환합니다.
10 virtual long getFileSize(const std::string& filePath)
파일의 크기를 가져 온다.
인자 값으로는 상대경로 또는 절대경로가 올 수 있다.
상대경로를 입력시 앞에 디폴드 경로가 입력된다.
'잡담 > 과거' 카테고리의 다른 글
팀프로젝트 - 2 (0) | 2016.12.16 |
---|---|
cocos2d-x android&ios 에서의 데이터 저장(UserDefault 클래스) (0) | 2016.11.27 |
MinGW로 컴파일 해보기 (0) | 2016.11.24 |
MingGW설치 하기 (0) | 2016.11.24 |
1학년 팀프로젝트 - 1 (0) | 2016.11.20 |