简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话很少说,接下来你看到内容,讲所有来与官网html
我猜去所有机翻+我的修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981react
【以前我写过一些列关于expo和rn入门配置的东i西,你们能够点击这里查看:从零学习rn开发】git
相关文章:github
Expo大做战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用数据库
Expo大做战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题json
Expo大做战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等react-native
Expo大做战(四)--快速用expo构建一个app,expo中的关键术语api
Expo大做战(五)--expo中app.json 文件的配置信息微信
Expo大做战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式网络
Expo大做战(七)--expo如何使用Genymotion模拟器
Expo大做战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,你们能够来和我交流
写在二十三章之后的话,以前的翻译,无论如何,好与很差,终究是告一段落,也把expo基础理论的东西又深刻的理解了一遍,后续expo大做战系列将主要介绍expo sdk的api。
文件系统
提供对本地存储在设备上的文件系统的访问。每一个Expo应用程序都有独立的文件系统,没法访问其余Expo应用程序的文件系统。该API将file:// URI指向设备上的本地文件以识别文件。每一个应用程序只能读取和写入如下目录下的位置:
Expo.FileSystem.documentDirectory
file:// URI指向将存储此应用程序的用户文档的目录。存储在这里的文件将保留直到被应用程序明确删除。尾随/。示例用途用于用户保存的文件,以便他们再次看到。
Expo.FileSystem.cacheDirectory
file:// URI指向存储此应用程序使用的临时文件的目录。存储空间不足时,此处存储的文件可能会被系统自动删除。示例用途用于应用程序只须要一次性使用的下载或生成的文件。
所以,例如,应用程序用户文档目录中“myDirectory”下名为“myFile”的文件的URI将为Expo.FileSystem.documentDirectory +'myDirectory / myFile'。
建立文件的Expo API一般在这些目录中运行。这包括音频录制,相机照片,ImagePicker结果,SQLite数据库和takeSnapShotAsync()结果。这容许它们与FileSystem API一块儿使用。
某些FileSystem功能能够读取(但不写入)其余位置。目前Expo.FileSystem.getInfoAsync()和Expo.FileSystem.copyAsync()可以从React Native中的CameraRoll.getPhotos()返回的URI中读取。
Expo.FileSystem.getInfoAsync(fileUri,options)
获取关于文件或目录的元数据信息。参数
fileUri(string) - file://指向文件或目录的URI,或CameraRoll.getPhotos()返回的URI。options(object) - 选项图:
- md5(boolean) - 是否返回文件的MD5哈希值。默认为false。
- size(boolean) - 若是在来自CameraRoll.getPhotos()的源文件上操做,是否包含文件的大小(例如,若是文件存储在iCloud中,则跳过这能够防止下载文件)。大小老是返回file://locations。
返回
若是此URI不存在项目,则返回{exists:false,isDirectory:false}。不然返回包含如下字段的对象:
- exists(boolean) - true。
- isDirectory(boolean) - 若是这是一个目录,则为true;若是是文件,则为false
- modificationTime (number) - 自纪元以来以秒为单位表示的文件的最后修改时间。
- size (number) - 文件的大小(以字节为单位)。若是在来自CameraRoll.getPhotos()的源上进行操做,则仅在尺寸选项很是真实时才存在。
- uri (string) - 指向文件的file:// URI。这与fileUri输入参数相同。
- md5 (string) - 若是md5选项真的存在,则显示。包含文件的MD5哈希。
Expo.FileSystem.readAsStringAsync(fileURI)
以字符串形式读取文件的所有内容。参数
fileUri(string) - 文件://文件或目录的URI。返回
包含文件所有内容的字符串。Expo.FileSystem.writeAsStringAsync(fileUri,contents)
以字符串形式写入文件的所有内容。参数
fileUri(string) - file://文件或目录的URI。contents(string) - 用来替换文件内容的字符串。
Expo.FileSystem.deleteAsync(fileUri,options)
删除文件或目录。若是URI指向一个目录,则该目录及其全部内容将被递归删除。参数
fileUri(string) - file://文件或目录的URI。options(object) - 选项图:
- idempotent(boolean) - 若是为true,则在此URI没有文件或目录时不要抛出错误。默认为false。
Expo.FileSystem.moveAsync(options)
将文件或目录移动到新位置。参数
options(object) - 选项图:
- from (string) - file:// URI到原始位置的文件或目录。
- to (string) - file:// URI指向文件或目录,该文件或目录应该是其新位置。
Expo.FileSystem.copyAsync(options)
建立文件或目录的副本。目录以其全部内容递归复制。参数
options(object) - 选项图:from(string) - file:// URI复制到要复制的文件或目录,或由CameraRoll.getPhotos()返回的URI。
to(string) - 要建立的新副本的file:// URI。
Expo.FileSystem.makeDirectoryAsync(fileUri,options)
建立一个新的空目录。参数
fileUri(string) - file://建立新目录的URI。options(object) - 选项图:
- intermediates(boolean) - 若是为true,则在fileUri上建立目录时建立任何不存在的父目录。若是为false,则在任何中间父目录不存在时引起错误。默认为false。
Expo.FileSystem.readDirectoryAsync(fileURI)
枚举目录的内容。参数
fileUri(string) - file://目录的URI。返回
一串字符串,每一个字符串都包含文件或目录名称Expo.FileSystem.downloadAsync(uri,fileUri,options)
将远程URI处的内容下载到应用程序文件系统中的文件中。例
FileSystem.downloadAsync( 'http://techslides.com/demos/sample-videos/small.mp4', FileSystem.documentDirectory + 'small.mp4' ) .then(({ uri }) => { console.log('Finished downloading to ', uri); }) .catch(error => { console.error(error); });参数
url(string) - 要从其下载的远程URI。fileUri(string) - 要下载到的文件的本地URI。若是此URI没有文件,则会建立一个新文件。若是这个URI有一个文件,它的内容将被替换。
options(object) - 选项图:
- md5(boolean) - 若是为true,则在返回的对象中包含文件的MD5哈希。默认为false。为方便起见,由于一般在下载后当即检查文件的完整性。
返回
返回包含如下字段的对象:uri(string) - 指向文件的file:// URI。这与fileUri输入参数相同。
status (number) - 下载网络请求的HTTP状态码。
headers (object) - 包含全部HTTP标头字段及其下载网络请求值的对象。对象的键和值分别是标题名称和值。
md5 (string) - 若是md5选项真的存在,则显示。包含文件的MD5哈希。
Expo.FileSystem.createDownloadResumable(uri,fileUri,options,callback,resumeData)
建立一个DownloadResumable对象,它能够启动,暂停和恢复将远程URI下载的内容下载到应用文件系统中的文件。请注意:您须要在DownloadResumable实例上调用downloadAsync()以启动下载。 DownloadResumable对象具备提供下载进度更新的回调。经过使用AsyncStorage存储DownloadResumable.savable()对象以供往后检索,能够跨应用程序从新启动恢复下载。可保存对象包含在从新启动应用程序后初始化新的DownloadResumable对象以恢复下载所需的参数。参数
url(string) - 要从其下载的远程URI。fileUri(string) - 要下载到的文件的本地URI。若是此URI没有文件,则会建立一个新文件。若是这个URI有一个文件,它的内容将被替换。
options(object) - 选项图:
- md5(boolean) - 若是为true,则在返回的对象中包含文件的MD5哈希。默认为false。为方便起见,由于一般在下载后当即检查文件的完整性。
- headers (object) - 包含请求所需的任何附加HTTP头字段的对象。对象的键和值分别是标题名称和值。
callback(function) - 在每次写入数据时调用此函数以更新下载进度。传递如下字段的对象:
- totalBytesWritten(number) - 下载操做写入的总字节数。
- totalBytesExpectedToWrite(number) - 预计由下载操做写入的字节总数。
- resumeData(string) - 容许api恢复暂停下载的字符串。这在下载暂停时自动设置在DownloadResumable对象上。初始化新的DownloadResumable时,它应该为空。
Expo.FileSystem.DownloadResumable.downloadAsync()
将远程URI处的内容下载到应用程序文件系统中的文件中。返回
返回包含如下字段的对象:
- uri(string) - 指向文件的file:// URI。这与fileUri输入参数相同。
- status (number) - 下载网络请求的HTTP状态码。
- headers (object) - 包含全部HTTP标头字段及其下载网络请求值的对象。对象的键和值分别是标题名称和值。
- md5(string) - 若是md5选项真的存在,则显示。包含文件的MD5哈希。
Expo.FileSystem.DownloadResumable.pauseAsync()
暂停当前的下载操做。在成功暂停操做后,resumeData被添加到DownloadResumable对象中。返回可使用AsyncStorage进行保存以供未来检索的对象(与调用Expo.FileSystem.DownloadResumable.savable()时返回的对象相同。请参见下面的示例。返回
返回包含如下字段的对象:
- url(string) - 要从其下载的远程URI。
- fileUri(string) - 要下载到的文件的本地URI。若是此URI没有文件,则会建立一个新文件。若是这个URI有一个文件,它的内容将被替换。
- options(object) - 选项图:
- md5(boolean) - 若是为true,则在返回的对象中包含文件的MD5哈希。默认为false。为方便起见,由于一般在下载后当即检查文件的完整性。
- resumeData(string) - 容许API恢复暂停下载的字符串。
Expo.FileSystem.DownloadResumable.resumeAsync()
恢复暂停的下载操做。返回
返回包含如下字段的对象:
- uri(string) - 指向文件的file:// URI。这与fileUri输入参数相同。
- status (number) - 下载网络请求的HTTP状态码。
- headers (object) - 包含全部HTTP标头字段及其下载网络请求值的对象。对象的键和值分别是标题名称和值。
- md5(string) - 若是md5选项真的存在,则显示。包含文件的MD5哈希。
Expo.FileSystem.DownloadResumable.savable()
返回能够与AsyncStorage一块儿保存的对象以供未来检索。返回
返回包含如下字段的对象:url(string) - 要从其下载的远程URI。
fileUri(string) - 要下载到的文件的本地URI。若是此URI没有文件,则会建立一个新文件。若是这个URI有一个文件,它的内容将被替换。
options(object) - 选项图:
- md5(boolean) - 若是为true,则在返回的对象中包含文件的MD5哈希。默认为false。为方便起见,由于一般在下载后当即检查文件的完整性。
- resumeData(string) - 容许api恢复暂停下载的字符串。
例
const callback = downloadProgress => { const progress = downloadProgress.totalBytesWritten / downloadProgress.totalBytesExpectedToWrite; this.setState({ downloadProgress: progress, }); }; const downloadResumable = FileSystem.createDownloadResumable( 'http://techslides.com/demos/sample-videos/small.mp4', FileSystem.documentDirectory + 'small.mp4', {}, callback ); try { const { uri } = await downloadResumable.downloadAsync(); console.log('Finished downloading to ', uri); } catch (e) { console.error(e); } try { await downloadResumable.pauseAsync(); console.log('Paused download operation, saving for future retrieval'); AsyncStorage.setItem( 'pausedDownload', JSON.stringify(downloadResumable.savable()) ); } catch (e) { console.error(e); } try { const { uri } = await downloadResumable.resumeAsync(); console.log('Finished downloading to ', uri); } catch (e) { console.error(e); } //To resume a download across app restarts, assuming the the DownloadResumable.savable() object was stored: const downloadSnapshotJson = await AsyncStorage.getItem('pausedDownload'); const downloadSnapshot = JSON.parse(downloadJson); const downloadResumable = new FileSystem.DownloadResumable( downloadSnapshot.url, downloadSnapshot.fileUri, downloadSnapshot.options, callback, downloadSnapshot.resumeData ); try { const { uri } = await downloadResumable.resumeAsync(); console.log('Finished downloading to ', uri); } catch (e) { console.error(e); }
下一张继续介绍,这一篇主要介绍了:expo sdk api之 FileSystem(文件操做系统)!,欢迎你们关注个人微信公众号,这篇文章是否被你们承认,个人衡量标准就是公众号粉丝增加人数。欢迎你们转载,但必须保留本人博客连接!