1、Flash的读写操作
Esp8266的Flash为4M,其中1M用于存储程序,其他的空间有一部分用于系统,3M中剩下的大部分空间可以用来存放文件。

#include <FS.h>
String file_name = "/Fle/note.txt"; //被读取的文件位置和名称,放在/Fle文件夹下void setup() {Serial.begin(9600);Serial.println("");Serial.println("SPIFFS format start");SPIFFS.format();    // 格式化SPIFFSSerial.println("SPIFFS format finish");if (SPIFFS.begin()) { // 启动SPIFFSSerial.println("SPIFFS Started.");} else {Serial.println("SPIFFS Failed to Start.");}file_write(file_name, "1111");file_read(file_name);file_add(file_name, "2222");file_read(file_name);
}
void loop() {}//写操作
void file_write(String file_name, String content)
{/*****************************************写入闪存文件内容*************************************************/File dataFile = SPIFFS.open(file_name, "w");// 建立File对象用于向SPIFFS中的file对象(即/notes.txt)写入信息dataFile.println(content);       // 向dataFile写入字符串信息dataFile.close();                           // 完成文件写入后关闭文件Serial.print("已写入闪存文件内容:");Serial.println(content);
}
//读操作
void file_read(String file_name)
{//确认闪存中是否有file_name文件File dataFile;if (SPIFFS.exists(file_name)){//建立File对象用于从SPIFFS中读取文件dataFile = SPIFFS.open(file_name, "r");//读取文件内容并且通过串口监视器输出文件信息Serial.println("读取的文件内容:");for (int i = 0; i < dataFile.size(); i++){Serial.print((char)dataFile.read());}}else{Serial.print(file_name);Serial.print(" NOT FOUND.");}//完成文件读取后关闭文件dataFile.close();
}
//追加操作
void file_add(String file_name, String content)
{if (SPIFFS.exists(file_name)){File dataFile = SPIFFS.open(file_name, "a");// 建立File对象用于向SPIFFS中的file对象(即/notes.txt)写入信息dataFile.println(content); // 向dataFile添加字符串信息dataFile.close();                           // 完成文件操作后关闭文件Serial.println("已经增添内容:");Serial.println(content);}else {Serial.print(file_name);Serial.print(" NOT FOUND.");}
}


2、Flash上传文件并读取显示,以此来验证是否真的上传了
这里为了完成上传到Flash的任务,需要下载一个基于esp8266和Arduino的Flash文件上传插件
下面是安装Flash文件上传插件的具体步骤:

tools文件夹是要自己新建的,放在tools文件夹下的ESP8266FS文件夹是解压后的文件夹。记得设置完后要重启Arduino IDE软件才能生效。
下面采用这个插件进行Flash文件上传并验证:
首先在工程文件夹下新建一个data文件夹,把要上传的文件放在data文件夹下。打开Arduino IDE后点击工具-----ESP8266 Sketch Data Upload,点击之后会看到Esp8266的蓝灯在闪烁。烧录完成之后文件就已经保存在Esp8266的Flash里了。

现在利用以下程序来验证:

#include <FS.h>
String file_name = "/note.txt"; //被读取的文件位置和名称,放在根目录void setup() {Serial.begin(9600);Serial.println("");if (SPIFFS.begin()) { // 启动SPIFFSSerial.println("SPIFFS Started.");} else {Serial.println("SPIFFS Failed to Start.");}file_read(file_name);file_add(file_name, "\n2222");file_read(file_name);
}
void loop() {}void file_write(String file_name, String content)
{/*****************************************写入闪存文件内容*************************************************/File dataFile = SPIFFS.open(file_name, "w");// 建立File对象用于向SPIFFS中的file对象(即/notes.txt)写入信息dataFile.println(content);       // 向dataFile写入字符串信息dataFile.close();                           // 完成文件写入后关闭文件Serial.print("已写入闪存文件内容:");Serial.println(content);
}
void file_read(String file_name)
{//确认闪存中是否有file_name文件File dataFile;if (SPIFFS.exists(file_name)){//建立File对象用于从SPIFFS中读取文件dataFile = SPIFFS.open(file_name, "r");//读取文件内容并且通过串口监视器输出文件信息Serial.println("读取的文件内容:");for (int i = 0; i < dataFile.size(); i++){Serial.print((char)dataFile.read());}}else{Serial.print(file_name);Serial.print(" NOT FOUND.");}//完成文件读取后关闭文件dataFile.close();
}
void file_add(String file_name, String content)
{if (SPIFFS.exists(file_name)){File dataFile = SPIFFS.open(file_name, "a");// 建立File对象用于向SPIFFS中的file对象(即/notes.txt)写入信息dataFile.println(content); // 向dataFile添加字符串信息dataFile.close();                           // 完成文件操作后关闭文件Serial.println("已经增添内容:");Serial.println(content);}else {Serial.print(file_name);Serial.print(" NOT FOUND.");}
}

上面程序中不能再进行SPIFFS.format()格式化操作了,否则会把刚保存进去的文件清除掉,并且注意到放在data文件夹下的文件均是放在esp8266的Flash的根目录下的,所以程序中的文件目录也应该用/note.txt。同时也要注意不能在程序中再对/note.txt文件进行写操作,否则也会覆盖掉123456789这个信息。
运行结果:

从上面可以看出,除了123456789,后面还有两个2222,这是因为在下载完成后会运行一遍程序,为了让串口显示数据我按了一次复位键,所以程序运行了两遍,追加了两次2222。

Esp8266的Flash读写操作以及Flash上传文件相关推荐

  1. 禁止adobe flash player后台偷偷的上传文件的方法

    现在很多人都喜欢看网页电影,可是,你们有没有发现flash player在偷上传文件呢?也许你不相信,flash player也会p2p上传文件,但事实证明,确实如此.上传文件可是会占用上行带宽,从而 ...

  2. 不借助js插件和flash实现不跳转上传文件

    1.html页面代码 <input type="button" id="uploadBtn" value="选择文件"> < ...

  3. HC32 flash 读写操作

    flash 读写操作 HC32 flash 简介 HC32 flash 操作和时钟之间的关系 Flash 的读写操作 解锁寄存器 单次编程无回读功能 单编程有回读 连续编程 擦除功能 全擦除功能 综合 ...

  4. Struts2+ibatis+dwz 框架实现uploadify上传文件

    下载js包 (3.2版本) 下载地址:http://www.uploadify.com/download/ 解压后文件: jsp页面 <div class="pageContent&q ...

  5. JAVA上传文件图片到服务器保存

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存! 首先是页面 html的   我这是提交一个文件和类型 <div style="border: 1px solid ...

  6. php上传文件默认路径,PHP文件上传到指定目录的实现过程实例解析

    摘要:文件上传其实很简单,通过form表单就可以实现.但form表单上传文件只是把文件放到服务器的临时目录,它还需要我们把上传到临时目录的文件转放到服务器的指定目录.简单的说:把文件从临时目录移动到指 ...

  7. java上传文件图片到服务器保存,Java上传文件图片到服务器的方法

    这里我记录一个比较简单方便操作的java上传文件图片到服务器并且保存,具体内容如下 首先是页面html的   我这是提交一个文件和类型 我是添加一张临时图片得到微信的media_id保存数据库! en ...

  8. NAND FLASH 读写操作 简介

    NAND FLASH 内存详解与读写寻址方式 一.内存详解 NAND闪存阵列分为一系列128kB的区块(block),这些区块是 NAND器件中最小的可擦除实体.擦除一个区块就是把所有的位(bit)设 ...

  9. 瑞萨R78族Flash读写操作详细探讨

    前言 最近使用到瑞萨R78族的MCU,准备做一个关于掉电保存参数配置的功能,需求大概是对200多个参数在掉电瞬间保存到芯片flash空间中,网上关于瑞萨MCU的flash读写操作教程也比较少,于是笔者 ...

最新文章

  1. Hr必看:也许你做的绩效考核都是错的
  2. BroadcastReceiver 接收系统短信广播
  3. 内嵌资源html,内嵌元素(HTML)
  4. 4-玩转数据结构-链表
  5. 向量空间和计算机科学与技术,向量空间
  6. Java SE7新特性之try-with-resources语句
  7. volatile用法
  8. 【IPF2020】浪潮集团高级副总裁彭震:智算中心 筑基智慧世界
  9. Ubuntu安装Python的相对简单方法
  10. 【原创】大叔问题定位分享(33)beeline连接presto报错
  11. 构建 Vue.js 2.0项目
  12. ArcGIS水文分析实战教程(7)细说流域提取
  13. java前端向后端传送实体类数据
  14. c语言程序设计第3版高等教育,C语言程序设计第三3版 何钦铭 颜晖 高等教育出版社 9787040432...
  15. 努力做一个优秀的programmer [ C# 影院售票系统]
  16. 硅谷也疯狂 IT互联网进入中美跨境人才抢夺战时代
  17. 汽车Bootloader流程
  18. Big Sur系统下的mac重置
  19. 服务器南北桥芯片 维修,[故障处理日记] 集显主板北桥虚焊故障及维修工具与技巧...
  20. GitHub统计代码量

热门文章

  1. 【C++要笑着学】list 常用接口介绍 | 支持任意位置O(1)插入删除的顺序容器 list
  2. 星辰小队针对于软件“星遇”的第二次10天冲刺——第3天
  3. 北京计算机科学技术研究所,北京大学计算机科学技术研究所
  4. 如何在SuperMap中打开谷歌卫星地图
  5. python做es的聚合统计和分页读取
  6. 副驾驶的意义_副驾驶在飞行中的作用与地位
  7. 微软首席建筑师 查尔斯—西蒙尼
  8. CAD模型导入Pointwise网格导入Fluent的联合设计教程
  9. 关于MP4文件格式解析
  10. python将图片转换为PDF文件