简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网

我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981

【之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发

相关文章:

Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用

Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

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(文件操作系统)欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

 

Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)的更多相关文章

  1. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. Expo大作战(三十五)--expo sdk api之Location!

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  4. Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. Expo大作战(三十二)--expo sdk api之Noifications

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  6. Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  8. Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. Expo大作战(二十六)--expo sdk api之Video和WebBrowser

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. css高级选择器&盒模型

    css高级选择器&盒模型 1.组合选择器 群组选择器 /* 每个选择器为可以为三种基础选择器的任意一个,用逗号隔开,控制多个*/ div,.div,#div{ color:red } 后代(子 ...

  2. ASP.NET Core中自定义路由约束

    路由约束 ASP.NET Core中,通过定义路由模板,可以在Url上传递变量,同时可以针对变量提供默认值.可选和约束. 约束的使用方法是在属性路由上添加指定的约束名,用法如下: // 单个使用 [R ...

  3. jsp和servlet的关系

    JSP是Servlet技术的扩展,本质上就是Servlet的简易方式.JSP编译后是“类servlet”. Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完 ...

  4. Ubuntu下安装程序的三种方法(转)

    引言 在Ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. 一.apt-get方法 ...

  5. 程序员、互联网从业者必读KK凯文凯利三大力作之《失控》总结

  6. PIVOT 行列相转

    先介绍一下英文释义: pivot 英 ['pɪvət]  美 ['pɪvət] n. 枢轴:中心点:旋转运动 vt. 以…为中心旋转:把…置于枢轴上 vi. 在枢轴上转动:随…转移 adj. 枢轴的: ...

  7. MySQL 性能管理及架构设计指南

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定 ...

  8. 从字节码层面看“HelloWorld”

    一.HelloWorld 字节码生成 众所周知,Java 程序是在 JVM 上运行的,不过 JVM 运行的其实不是 Java 语言本身,而是 Java 程序编译成的字节码文件.可能一开始 JVM 是为 ...

  9. 【精解】EOS TPS 多维实测

    本文主要研究EOS的tps表现,会从插件.cleos.EOSBenchTool以及eosjs四种方式进行分析研究. 关键字:eos, tps, cleos, txn_test_gen_plugin, ...

  10. python机器学习笔记 ID3决策树算法实战

    前面学习了决策树的算法原理,这里继续对代码进行深入学习,并掌握ID3的算法实践过程. ID3算法是一种贪心算法,用来构造决策树,ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性 ...