티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함