supergravity

리뷰 - expo-file-system - Expo 파일 시스템 본문

개발중 기억해야 할만한 것들

리뷰 - expo-file-system - Expo 파일 시스템

supergravity 2021. 1. 21. 07:06

docs.expo.io/versions/latest/sdk/filesystem/

 

FileSystem - Expo Documentation

Expo is an open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React.

docs.expo.io

Introduction

 

expo에서 api로 제공하는 expo-file-system은 로컬 디바이스의 파일 서비스를 접근을 제공을 해준다. expo앱을 사용하는 소비자의 앱은 다른 expo앱에 접근하지 않는다. 하지만, 다른 expo앱들의 로컬 파일 시스템의 데이터를 공유하고 저장할 수 있다. 또한 URLs를 통해서 업로드 또는 다운로드를 할 수 있다. 

 

그림 1.

 

위의 그림은 전반적인 expo 파일시시템의 에코시스템을 묘사한 그림이다.  간략하게 위의 상황을 이해해 보자.

          

1.Newtwork resource  와   Expo file system

Newtwork는 핸드폰 이외의 공간이다. 인터넷(네트워크)을 통해서 데이터를 주고받는다. expo file system은 local app filesystem과 bundled resources과 있다. bundled resources는 읽기만 가능한 공간이다. Local app filesystme에는 Document, Cache directory 있다. Document의 경우 영구적으로 데이터를 저장하는 데 사용을 한다. Cache의 경우는 Document와 대조적으로 영구적으로 저장되지 않고 특정 순간이 되면 자동적으로 data가 제거된다. Newtwork resource와 Expo file systme과 소통을 하기 위해서 두가지 함수가 존재한다. uploadAsync()와 downloadAsync()이다. 뒤에 Aync를 보면 알 수 있듯이 비동기적으로 실행이 될 것이라는 것을 알 수 있다.

 

2. Other apps resorces, Expo file system 와 Your Expo app

정확하지는 않지만 Other apps resorces는 expo로 만들어진 다른 앱을 의미하는 것 같다. Other apps resorces의 file들을 Expo file systme에 저장하고 불러올수 있다. 저장을 할 때는 cocyAsync()를 이용하여 복사한 후 저장을 한다. 이렇게 Expo fie systme에 저장을 한 파일은 expo-file-systme api를 설차한 앱에서 getinfoAsync(), readAsStringAsync(), writeAsStringAsync()를 통해서 접근이 가능하다. 

                     

Method

               

위의 함수들중 getInforAsync()만 살펴보도록 하자.

getInfoAsync(fileUri, optins)는 한 가지 파일, 폴더 또는 다른 앱/asset에 대한 매타 데이터의 정보를 가지고 온다. 

 

Arguments

 

fileUri (string)  --- 파일이나 폴더를 가르키는 URI이다. 

optins (object) --- 옵션들의 함수이다.(key value쌍을 의미하는 것 같다.)

     md5 ( boolean ) -- MD5 hash를 리턴할것인지 아닌지. false가 디폴트이다.

     size ( boolean ) -- 파일의 싸이즈를 포함할지 안 할지

 

return 

 

만약에 URI에 아이템이 존재하지 않는다면 Promise를 리턴한다. Promise는 URI아이템이 없다는 사실이 확인이 끝나면 { exists : false, isDirectory: false}를 resolves 한다. 그 반대의 경우는 아래의 fileds와 함께 resolve 된다.

 

exists ( boolean ) -- true

isDirectory (boolean) -- true 만약 존재하면

modification Time (number) --  마지막의 다시 정의된 시간이다.

size (number ) -- bytes를 리턴

uri (sting) -- fille://URI. 인풋 했던 fileURI와 같다.

md5 (string) -- MD5 hash를 리턴하다.

'개발중 기억해야 할만한 것들' 카테고리의 다른 글

앱 업그레이드 계획  (0) 2021.05.11
Django aggregation 정리  (0) 2021.03.02
파이썬 가상환경 npm 사용  (0) 2021.01.19
aws EC2 django-rest 배포  (0) 2021.01.02
HTTP 요청 헤더  (0) 2021.01.01
Comments