精华内容
下载资源
问答
  • android studio实现文件存储和sharedPreference存储,以QQ登陆为例,将登录的用户名和密码保存到后台,有2种方式
  • web项目图片/文件保存方式

    千次阅读 2019-05-07 21:57:12
    web项目图片/文件保存方式其实文件和图片都是二进制流文件 以下统称图片1直接把图片存到数据库字段中2图片存项目/public/img目录,文件名存数据库字段3规范的使用阿里云oss/腾讯云cos存图片,数据库存图片名 其实文件...

    其实文件和图片都是二进制流文件 以下统称图片

    1直接把图片存到数据库字段中

    第一种做法是最简单的,直接把图片当成字符串一样来操作,用对象的一个属性来接收,CRUD不多说,但是是最低效最不实际的做法,实际情况不使用

    2图片存项目/public/img目录,文件名存数据库字段

    这种玩玩自己demo,没有自己服务器的时候第一首选
    接下来将讲讲细节
    1前端发送文件给后端应该用js预览,
    如果直接每次都直接上传会有问题
    为什么呢,举个例子
    你现在是编辑一个商品 有名称 有图片 图片上传了 哦吼你刷新一下 或者你关掉页面了
    这时候图片永远都在数据库了 或者新建商品已经有一个没用的商品词条了
    而且每选择一次图片都会访问数据库,不会这么做的

    2后端取得了图片,要把名字唯一用uuid/当前时间戳都行,再切割".",获得文件后缀
    图片名变为"时间戳/uuid.格式名"例如:1557222244420.jpg,放到数据库字段中
    文件用流存储到相对路径
    为什么是相对路径
    因为你的代码要拿到linux上线运行,放到项目的一个文件夹下,这样就可以整体迁移

    最后前端只需要获得后端的图片文件名,再加上路径的拼接,就可以获得图片了

    缺点,项目存了很多文件和图片,很大
    所以有第三个方法
    附上js预览代码

    //vue中的method
    bannerChange: function (event) {
                    var self = this;
                    var file = event.target.files[0];
                    self.imgUploadInfo.banner_url = file;
                    // 图片预览
                    var reader = new FileReader();
                    reader.onload = (function (theFile) {
                        return function (e) {
                            self.bannerFile = e.target.result;
                        }
                    })(file);
                    reader.readAsDataURL(file);
                },
    

    3规范的使用阿里云oss/腾讯云cos存图片,数据库存图片名

    具体做法可以参考
    配置cos文章
    http://www.manongjc.com/article/24925.html
    我的文章
    https://blog.csdn.net/weixin_44637711/article/details/89930179
    两个其实都是云上存储,可以公网直接访问图片
    https://bravery-1258739678.cos.ap-guangzhou.myqcloud.com/1557219376367.jpg
    src拿到其实也是网络的东西
    也是做些字符拼接即可

    展开全文
  • 示波器的各种文件存储方式与分析

    千次阅读 2018-03-02 15:12:28
    关于示波器设置或数据的存储功能很多人表示似懂非懂,想对所测的数据进行二次分析却无从下手,存储由此上演了犹抱琵琶半遮面的经典桥段,接下来让我们来揭开它神秘的面纱,让你从此保存文件不再是难题。示波器的存储...

    关于示波器设置或数据的存储功能很多人表示似懂非懂,想对所测的数据进行二次分析却无从下手,存储由此上演了犹抱琵琶半遮面的经典桥段,接下来让我们来揭开它神秘的面纱,让你从此保存文件不再是难题。

    示波器的存储字面上理解也就是将所需的波形信息以不同的格式存储下来便于我们做更深入的分析,存储有以下几个方面的内容:

    存储的类型:有设置文件、二进制数据、CSV数据、图像格式(BMP图像、JPG图像、PNG图像、灰度图像);

    存储方式:【Print Screen】(一键存储)、【Save/Recall】(存储)、PC联机截图、以及ScopeReport TM;

    存储路径:本地闪存和外部存储器(将U盘接入示波器USB口即可)。

    本文将以存储方式为索引进行讲解。

    一、【Print Screen】(一键存储)

    【Print Screen】一键存储功能,隶属于示波器7种一键快捷操作,蓝色操作键易于识别,操作方便,只需要一键即可将当前屏幕显示的内容以“*.png”图像的格式保存下来,保存路径可以事先进行设置,可保存在本地闪存或者外部存储器U盘中。一键存储的内容将会在保存路径中自动命名保存,一般以dso开头。工程师可同时保存多个文件到U盘中,再在PC机中进行查看分析。

           

    二、【Save/Recall】(存储)

    通过菜单界面上的【Save/Recall】(存储)按钮可进入存储界面进行存储信息设置

    ZDS2000系列示波器支持的存储格式包括:

    设置文件:保存示波器的设置信息,方便工程师下一次的使用,避免重新设置的麻烦;它以“*.stp”格式存到本地闪存和外部存储器U盘中,可导入/导出任意示波器设置。

    二进制数据:当工程师需要对波形的数据进行深度分析时可保存为二进制文件,它会选中通道的二进制一维原始数据,以“*.wfm”格式存到本地闪存和外部存储器U盘中,不支持导入,可进行大数据存储。其中二进制文件可转换为CSV文件后,可用Excel、Access或者文本文件打开,转换软件可进入网页http://www.zlg.cn/OSC/,点击【固件与工具】进行下载。

    CSV数据:数据文件保存的第二种方式,它会保存屏幕显示或指定通道的波形数据,以“*.csv”格式存到本地闪存和外部存储器U盘中,是一种逗号分隔值文件格式,其文件以纯文本形式存储表格数据,它会将需要的二进制数据转换成ASCII码,以ASCII码数据进行保存,可用Excel、Access或者文本文件打开。

    ZDS2000系列示波器的CSV数据文件里,包含设备信息、水平档位、水平偏移等信息

    图像格式:屏幕图像,可以以不同的图像格式保存,如BMP图像、JPG图像、PNG图像、灰度图像。

    在存储路径下可删除原有文件或者复制已有文件。其中二进制文件与CSV文件在【存储设置】中的【数据长度】可选【内存】或【屏幕】选项,在自动存储深度设置下,【屏幕】波形数据与【内存】波形数据是相同的。

    注:所有的文件均可通过复制、粘贴功能将文件复制粘贴到本地或者外部存储U盘中。

    三、PC联机截图

    PC联机截图是一种快捷的保存截图的方式,无需U盘即可直接将图像文件保存在PC机中,即以“*.bmp”格式存至PC机的相应安装文件路径中,这种方式只需要通过USB线(LAN或者串口线)与PC机相连,即可使用。

    四、ScopeReport TM

    ScopeReport TM功能可以对所有的协议解码和FFT的频谱分析结果进行“打包”处理,自动生成html或者csv文件格式的报告,保存在本地闪存和外部存储器U盘中,用户可以以报表的形式进行查看;

    以FFT分析为例,当分析结果出来后在【Stop】状态下,点击FFT菜单下的【导出报表】,即可导出

    通过对ZDS2000系列示波器的存储方式的总结与归纳,相信大家对存储有了更详细的了解,在使用过程中可以根据自己的需求与习惯选择相应的存储方式,更有效率的进行数据分析。

      更多仪器信息请关注国信高科

         



    展开全文
  • 下面通过本文给大家介绍Android文件存储数据方式。 1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。 创建的存储文件保存在/data/data/...
  • 【Linux】Linux文件文件存储

    万次阅读 2018-07-31 18:39:51
    从使用和创建文件的用户角度来看,文件是磁盘的最小存储单元,用户数据除非在文件中,否则不能保存到磁盘;从进程的角度来看,文件是一种进程可以对它进行访问的,但独立于进程而存在的数据结构,文件中的信息不会因...

    文件的基本概念

    文件就是一组按照某种格式组织的具有完整逻辑意义的信息。

    从使用和创建文件的用户角度来看,文件是磁盘的最小存储单元,用户数据除非在文件中,否则不能保存到磁盘;从进程的角度来看,文件是一种进程可以对它进行访问的,但独立于进程而存在的数据结构,文件中的信息不会因进程的死亡而消失,除非文件的属主显式地删除它;从操作系统的角度来看,文件是一个逻辑上连续的数据集合,它仅向系统提供文件管理所必须的属性。

    文件属性

    磁盘中的文件数据的含义只能由用户程序来解释,而文件系统只对它们的存储和管理负责。但是,文件必须向文件系统提供用于管理的必要信息和属性。同样,文件系统也会为文件添加一些用于管理的属性,这些属性通常为:

    • 名称:为方便用户对文件的引用,文件要有一个用字符串表示的文件名;
    • 位置:文件在磁盘中的存储位置;
    • 大小:以字节计算的文件大小;
    • 类型:为对不同格式的文件进行区分,不同文件有不同的类型。文件以文件扩展名的形式来表示文件的类型;
    • 保护:由用户或者系统管理人员设置的,用来表示文件访问权限的属性;
    • 时间、日期:为了查询方便,文件上通常都要标有文件建立时间、文件最近修改时间等于时间有关的属性;
    • 用户标识:该属性用来记录文件的拥有者。

    常见的文件扩展名如下表所示:

    常用文件扩展名
    文件类型扩展名说明
    可执行文件exe、com、bin可执行的机器语言程序
    目标文件obj、o已经编译完成但尚未连接的机器语言代码
    源文件c、cpp、java、pas、asm、a各种语言的源代码
    批处理文件bat、sh命令解释器接受并解释的命令文件
    文本文件txt、doc文本数据文件
    文字处理文件wp、tex、rtf、doc由文字处理器产生的文件
    库文件lib、so、dll应用程序可共享的程序库文件
    打印或图文件ps、pdf、jpg用于打印或显示使用的文件
    多媒体文件mpeg、mov、rm音频或视频文件
    压缩文件zip、rm多个文件组织在一个文件中并被压缩的文件

    普通文件分类

    对于普通文件,从不同角度有不同的分类方法。

    从文件保存的数据形式来看,文件有程序源文件、目标文件、可执行文件等。源文件是由用户从终端输入的文件,它通常由ASCII码或者其他文字所组成;目标文件是源文件经汇编或编译之后得到的文件,它是一种二进制文件;可执行文件是经过编译连接形成的计算机可执行的文件。

    从文件的读写权限来看,分为只读文件、读写文件和可执行文件。仅允许用户进行读操作的文件叫做只读文件;用户既可以读也可以写的文件叫做读写文件;可执行文件则是只允许用户使用,通常不能对其进行读写操作。

    从文件在磁盘上的保存方式来看,有临时文件和永久文件。临时文件通常都是用于数据缓冲的中间文件,它是在用户程序的执行中根据当时的需要建立的,这种文件会随着程序运行的结束而被系统自动删除。

    如果从文件的管理者——操作系统的角度来看,上面的所有的这些文件只有两种文件:可执行文件(即程序文件)和数据文件。因为作为文件管理者,操作系统对于那些数据文件的任务还是为了用户保存或打开它们,至于其内容则由用户解释,与操作系统无关;而对于可执行文件则不同,操作系统必须解释并运行它们。

    进程、操作系统与文件之间的关系

    进程要通过操作系统来访问磁盘上的文件,也就是说,操作系统是进程与磁盘文件系统之间的中介。它们之间关系如下图所示:

    而文件经过文件系统和操作系统的封装之后,最终文件系统呈现给用户的界面如下所示:

    也就是说,用户看到的是经过一级级目录组织的文件,以及为用户提供的一组对文件进行操作的系统调用,例如创建文件的greate()、删除文件的delete()、打开文件的open()、关闭文件的close()、读文件的read()、写文件的write(),等等。

     

    用户对文件的主要操作

    在任何计算机系统中,文件操作命令都是普通用户管理文件的主要手段,是操作系统提供给用户的主要接口。主要操作如下:

    • 创建文件:两个步骤,首先在文件系统中为被创建文件寻找一个存储空间,然后在目录文件中为其创建一个条目,并在该条目上记录该文件的名称、大小、时间、拓展名、权限、位置等信息;
    • 写文件:首先按照用户输入的文件目录和文件名查找该文件,后验证用户权限。若该用户拥有对该文件的写权限,则将文件打开并把文件的句柄交给当前进程控制块,由进程对其进行写操作。在写文件过程中,系统还必须为该文件维护一个写位置指针,以跟踪写的位置;
    • 读文件:首先按照用户输入的文件目录和文件名查找该文件,后验证用户权限。若该用户拥有对该文件的读权限,则将文件打开并把文件的句柄交给当前进程控制块,由进程对其进行读操作。当然,系统还必须为该文件维护一个读位置指针;
    • 删除文件:系统按照用户输入的文件目录和文件名查找该文件,权限验证通过后,然后释放该文件所占的存储空间并删除该文件在目录文件中的相应条目。

    由上面的介绍可知,从文件用户的角度来看,操作系统的文件管理系统必须提供两项基本功能:一是要建立专门用于文件管理的目录体系;而是要为用户提供对文件进行操作的系统调用。

     

    文件的简单存储方式

    经过适当的软硬件处理,磁盘可以看成是如下图所示,由若干大小相等的“存储块”所组成的一个线性空间。为了对块进行识别,磁盘上的每一个块都有一个编号。

    通常一个文件需要占用多个存储块。为了方便查找和访问,需要一个结构类型的数据来记录文件的名称、存储位置、文件所有者、文件创建时间等信息。也就是说,磁盘文件系统中需要一个目录表来记录文件名称、存储位置等信息,并把这种记录叫做目录项,这个目录表就叫做目录文件,并被存放在磁盘上。目录文件是文件系统的自用文件,为了与用户文件相区别,人们就把用户文件叫做普通文件,系统自用文件叫做特殊文件。

    一种最简单的文件存储方式如下所示:

     

    存储块的组织方式

    其实,在实际应用中,由于各种原因,一个文件常常不是如上图占用一片连续的存储块,而是如下图所示占用不连续的存储块。也就是说,一个连续文件实际占用的存储块可能连续,也可能不连续,但必须保证从用户的角度看,它是连续且完整的。于是,在文件系统的发展中,为实现上述要求,在文件存储块的组织方式上就形成了多种方式。

    存储块的链接组织方式

    所谓链接组织方式,就是把同一个文件的这些不连续的存储块,按照文件的逻辑顺序链接成为一个链表。即在属于同一个文件的所有存储块中都保有一个指向它的后续存储块的指针,由这些指针来维护文件的逻辑顺序。

    上图就是一个采用链接组织方式,依次占用了7、2、8、20、5号存储块的文件。文件的首块指针和尾块指针都被存放在文件目录中。而文件的每一个存储块都包含下一个存储块的指针,这样当操作系统的文件管理系统在通过文件名获得了文件首块指针之后,就可以根据块中指针的指示,依次访问该文件的所有存储块,并将文件信息呈现给文件用户,从而使用户看到的是一个连续文件。

    目前常用的文件分配表(File Allocation Table,FAT)方式就是链接组织方式的一种变形。在这种方式中,存储块的链接关系被单独制作成了一张表——文件分配表。所谓文件分配表,就是一个以存储块号为下标的一个数组,由于该数组的元素与存储块一一对应,所以就可以用数组元素来描述文件占用存储块的情况。为了表示文件所占用存储块的逻辑顺序,在每个数组元素中填写的都是文件下一个存储块所对应的数组元素的下标。

    文件分配表方式如下图所示:

    例如:如果某一个外存储器共有i个存储块,那么就制作一个具有i行的数组,每一个数组元素都代表一个存储块,下标i就代表第i块;如果这个第i块是属于某一个文件的,那么在第i行的表格中存放的就是这个文件下一个存储块对应的数组元素的下标。这个下标其实是一个指针,它有两个作用:一方面它指向文件占用数组的下一个元素;另一方面指向了文件存储块。

    存储块的索引组织方式

    另一个很自然的方式是,为每一个文件创建一个长度与文件所占用存储块的数目相等的数组,以文件块的逻辑顺序号为数组元素的下标,而以文件存储块的指针为元素的内容,于是就形成了一个文件的索引表。简单地说,索引表就是文件块的逻辑块号与存储块号的对照表。

    下图表示一个按照逻辑顺序占用5、3、20、1号存储块的文件索引表与文件之间的关系:

    可以看到,这种表很像内存管理中的页表。同样,当文件比较大时,也可以使用多级索引结构。

     

    空闲块的记录

    未被文件所占用,或者被已删除文件释放出来的块叫做外存的空闲块。作为文件的管理者,操作系统必须随时掌握和了解空闲块的情况,以便在需要保存一个新文件时为其分配存储块。操作系统用来记录跟踪空闲块的数据结构主要有位图、链表、分组链表等。

    所谓位图管理方式,就是以数据的一个二进制位来表示对应存储块的空闲状态:如果存储块未被占用,则在该位记录为0;否则记录为1。

    由于使用位操作指令可以方便地实现位图操作,并且现代处理器一般都具有这种位操作指令,所以很多文件系统都采用这种位图来对磁盘空闲块进行管理。

    所谓链表管理方式,就是把空闲块的集合看成是一个空文件。即把所有空闲存储块用链表链接起来,链表的头指针指向第一个空闲存储块,而在这个存储块中包含有下一个存储块指针,以此类推,就可以把所有空闲存储块链接在一起了。

    分组链表方式就是链表方式的改进方案,就是在n个存储块中拿出一个存储块,专门用来存储其余n-1个存储块的指针,而把存储指针的存储块作为链表的节点,再链接成一个链表。

    使用链表管理方式的最大优点就是,能快速地找到大量空闲的存储块。

     

    展开全文
  • Linux文件系统及文件储存方式

    千次阅读 2017-02-08 20:05:54
    闲来无事复习了下Linux文件系统的基本构成,做下记录。主要涉及的内容有: Ext文件系统的记录方式; Linux文件系统的访问方式; rm删除的原理以及恢复方案。

    前言

    闲来无事复习了下Linux文件系统的基本构成,做下记录。主要涉及的内容有:
    Ext文件系统的记录方式;
    Linux文件系统的访问方式;
    rm删除的原理以及恢复方案。

    Linux文件系统构成

    现在一般使用的是Ext4格式的文件系统, 由最初的Ext2发展而来。
    对于Ext2和Ext3文件系统的描述, 请见:

    Linux将文件系统抽象为一个树形结构,可以在系统内挂载多个磁盘。
    Linux里面所有数据都是文件,文件夹也是文件。
    文件由如下内容构成:

    • 目录项(即文件名与Inode的映射)
    • Inode(文件基本信息与数据块 DataBlock 索引)
    • DataBlock

    文件式的文件结构

    以文件 /root/File 为例:

    # pwd
    /root
    
    # stat /root/
      File: `/root/'
      Size: 4096        Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d    Inode: 2315        Links: 14
    Access: (0550/dr-xr-x---)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-08 16:09:51.510593179 +0800
    Modify: 2017-02-08 16:09:45.789604414 +0800
    Change: 2017-02-08 16:09:45.789604414 +0800
    
    # stat File 
      File: `File'
      Size: 23496       Blocks: 48         IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 57115       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-08 16:06:52.739596489 +0800
    Modify: 2017-02-08 16:06:52.739596489 +0800
    Change: 2017-02-08 16:06:52.739596489 +0800

    当前操作系统持有的磁盘, 0~1号扇区为引导扇区, 2号扇区归”/”使用。

    # stat /
      File: `/'
      Size: 4096        Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d    Inode: 2           Links: 30
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-08 13:21:03.821594978 +0800
    Modify: 2016-07-31 03:53:01.651715290 +0800
    Change: 2016-07-31 03:53:01.651715290 +0800

    其包含:

    • Innode: 通过上级目录项的Innode序列’2’找到Innode
    • Innode中的DataBlock又是一个目录项,其中有root -> 2315的映射

    由此层层找到了/root/File这个文件。该文件依然包含:

    • Innode(大小共128B):

      Created with Raphaël 2.1.0 Innode 文件权限(rwx) 文件所有者(root/other) 文件创建时间 ... ... ... 数据索引 DataBlock 文件是否为空? Innode 直接数据索引一 直接数据索引二 ... ... ... 直接数据索引十二 间接一级数据索引 间接二级数据索引 间接三级数据索引 yes no
    • DataBlock(文件具体内容)

    其中DataBlock的计算方式为:

    • 十五个索引的大小都是4B, 共60B。
    • 前十二个直接索引直接索引到Block, Linux支持的Block大小有1K,2K, 4K
    • 间接索引就是索引的索引。可以索引 (Block大小 / 4B) * Block大小数据
    • 双间接索引是间接索引的索引,三间接索引是双间接索引的索引

    设置为1KB Block大小的文件系统的最大单个文件支持量16G。

    Block大小设1KB为,则间接为(1KB / 4B) * 1KB = 256KB。

    总空间= 直接+ 间接+ 双间接+ 三间接
    总空间= 12K + 256K + 256 * 256K + 256 * 256 *256K = 16G.


    其余:

    Block大小最大单一文件限制
    1KB16GB
    2KB256GB
    4KB2TB

    文件和文件夹的一个区别为其DataBlock里面储存的内容不一样。文件夹储存的是当前文件夹下一级所有的文件名与Innode号的映射;而文件则储存的是文件的具体内容。

    Linux的一个具体文件

    新建一个空文件 空文件/root/EmptyFile 进行对比

    # touch EmptyFile
    # stat EmptyFile 
      File: `EmptyFile'
      Size: 0           Blocks: 0          IO Block: 4096   regular empty file
    Device: fd01h/64769d    Inode: 57109       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-02-08 16:09:45.789604414 +0800
    Modify: 2017-02-08 16:09:45.789604414 +0800
    Change: 2017-02-08 16:09:45.789604414 +0800
    • 它的文件名储存在 /root 的 DataBlock中。即目录项。
    • Innode里面包含了 Inode: 57109 、Links: 1、Access: (0644/-rw-r–r–)等信息
    • 数据块大小扇区大小 0.5KB, 8个扇区凑成一个Block,所占Block: 0, Size: 0。该文件无数据。
    • 作为对比File的Blocks: 48, Size: 23496。

    一个Block只能属于一个文件。未使用完毕则空置。
    每个扇区的大小、Block由多少个扇区组成、Block的大小在系统格式化的时候就已经定好。理论上不能更改。

    系统对文件的访问方式

    如上一章节所诉。系统在访问文件的时候必须从根”/”开始逐级通过文件名寻找对应的Innode号,再通过Innode访问到文件的具体数据。

    例如访问/home/work/File

    Created with Raphaël 2.1.0 找到"/" 是否是个文件夹? 目录项里有无下级目标? 找到目标文件夹 下级目标是文件? 文件是否存在? 找到/home/work/File 错误结束 yes no yes no yes no yes no

    在这里面, 每次目录的访问都会对访问用户的权限进行校验,如果没有权限都会报权限错误

    Linux系统的删除方式

    了解了文件的储存形式,才能知道怎么删除它。

    Linux对每一个文件都设置了两个引用计数器i_count/i_nlink这两个计数器是关乎Linux操作系统的,跟文件系统无太大关联。

    i_count: 引用计数器,文件被一进程引用,i_count数增加 ,可以认为是当前文件使用者的数量;
    i_nlink: 硬链接数目(可以理解为磁盘的引用计数器),创建硬链接对应的 i_nlink 就会增加

    通过分析rm的源码得知它是调用了系统函数unlinkat

    static enum RM_status
    excise (FTS *fts, FTSENT *ent, struct rm_options const *x, bool is_dir)
    {
      int flag = is_dir ? AT_REMOVEDIR : 0;
      if (unlinkat (fts->fts_cwd_fd, ent->fts_accpath, flag) == 0)
        {
          // print
          // ....
          return RM_OK;
        }
    
      /* The unlinkat from kernels like linux-2.6.32 reports EROFS even for
         nonexistent files.  When the file is indeed missing, map that to ENOENT,
         so that rm -f ignores it, as required.  Even without -f, this is useful
         because it makes rm print the more precise diagnostic.  */
      // ....
    
      if (ignorable_missing (x, errno))
        return RM_OK;
    
      /* When failing to rmdir an unreadable directory, we see errno values
         like EISDIR or ENOTDIR (or, on Solaris 10, EEXIST), but they would be
         meaningless in a diagnostic.  When that happens and the errno value
         from the failed open is EPERM or EACCES, use the earlier, more
    
      // ....
      return RM_ERROR;
    }

    即rm的时候i_count加一再减二。 i_nlink减一(删除目录项中的文件名与Innode号的映射, 即无法再通过这个文件名进行索引)。


    如图:
    文件删除

    可以看到rm的删除仅仅是去掉目录项里面的一个值而已

    也就可以解释如下两个观点:

    • 当一个进程正在访问文件时,文件依然可以被访问。
      • 进程已经得到了文件的DataBlock
      • ls或者cat等操作必须通过文件名,而文件名已经在目录项里面删除了
    • 当文件存在其余硬链接时,文件依然可以显示。
      • 硬链接是文件名对Innode号的映射
      • 只要映射一直存在,文件一定能访问到(rm不会抹掉Innode)

    shred与rm的区别

    shred 在去掉目录项的时候,还会修改Innode以及覆盖DataBlock(3次)。
    此外shred还有多种模式,比如补充0,多次抹掉等等。

    rm删除文件的恢复

    rm 只是删除了目录项的一个链接。只要删除之后当前数据块没有被操作。 文件是一定可以被恢复的。 见testdisk:
    How to use TestDisk

    还有其它很多的文件恢复软件,其使用原理都是绕过文件系统,直接访问磁盘。每读取到一个Innode就根据其DataBlock索引找到被删除文件。

    后续可能会写一个C的单个文件恢复的代码。写好之后贴上来。

    我的代码

    本文若有错误敬请轻拍。

    展开全文
  • 本次代码的环境: 运行平台: Windows Python版本: Python3.x IDE: PyCharm 一 概述 数据存储是爬虫的一个很重要的部分,爬虫爬出来的数据要不存到...基于这两个存储思想,保存形式可以动作多样,文件存储有:T...
  • Android studio-文件存储

    千次阅读 2018-05-01 11:46:26
    1.Android中的数据存储方式有五种,分别是文件存储、SharedPreferences、SQLite数据库、ContentProvider以及网络存储。文件存储文件存储是Android中最基本的一种数据存储方式,它与Java中的文件存储类似,都是通过...
  • 上一章讲述了在linux系统当中怎么创建文件以及对文件的基本操作,这章主要是说查看文件的几种方式,顺便简单简单说下vim编辑器的使用。我们不管在使用什么系统上,查看文件肯定是必须要的,比如说安装一个mysql...
  • Android 文件存储位置梳理

    千次阅读 2019-03-07 00:21:55
    所有的安卓设备都有外部存储和内部存储,这两个名称来源于安卓的早期设备,那个时候的设备内部存储确实是固定的,而外部存储确实是可以像U盘一样移动的。 在后来的设备中,很多中高端机器都将自己的机身存储扩展到...
  • ASC文件数据存储格式

    2018-10-23 22:13:44
    很详细的CAN报文数据存储格式的介绍,可用于嵌入式开发CAN logger使用
  • 三种存储类型和三种存储方式

    万次阅读 多人点赞 2019-01-22 17:07:39
    三种存储类型:块存储、文件存储、对象存储 块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-...
  • python保存文件的几种方式

    万次阅读 多人点赞 2020-04-06 18:26:44
    当我们获取到一些数据时,例如使用爬虫将网上的数据抓取下来时,应该怎么把数据保存为不同格式的文件呢?下面会分别介绍用python保存为 txt、csv、excel甚至保存到mongodb数据库中文件的方法。 保存为txt文件 首先...
  • Microsoft Windows操作系统具有许多特殊文件夹,这些文件夹用于存储应用程序设置和文件存储Internet文件保存临时文件存储其他文件的快捷方式,等等。 该实用程序显示系统中所有特殊文件夹的列表。
  • 1.文件存储:以I/O流行式把数据存入手机内存或者SD卡,可以存储大数据,如音乐、图片或视频等。 2.SharedPreference:它本质上是一个XNL文件,以Map形式存入手机内存中。经常用于存储简单的参数设置,如QQ登录账号...
  • Linux文件系统存储方式

    千次阅读 2014-12-10 10:34:52
    Windows中采用的是FAT 表的形式,但是今天我主要的讲的是更为经典的Linux本地文件系统上的存储原理,稍稍分析一下他的结构,作为抛砖引玉。 文件系统的数据块管理 我们都知道,文件要被存储在磁盘中,我们都是把以...
  • Android数据存储方式(一)文件

    万次阅读 2013-02-24 22:18:10
    很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问。Android为数据存储提供...本篇介绍第一种存储方式文件,我们采用文件保存用户输入的数据,这里用到的是IO输入输出流对象,和使用SDCard的相关权
  • HDFS分布式文件存储系统详解

    千次阅读 2018-05-11 20:57:55
    HDFS简介一、HDFS:Hadoop Distributed File System 1. 一个分布式文件系统 2. 基于流数据模式访问和处理超大文件的需求而开发的 3. 适合应用在大规模数据集上 ...处理超大文件 能用来存储管理PB级的数据 ...
  • web选择文件保存路径

    热门讨论 2013-04-22 14:35:15
    web选择文件保存路径的方式,大致分为两种,大家可以下来了了解一下,个人表示第一种比较好用
  • AndroidQ文件存储适配

    千次阅读 2019-12-27 17:47:55
    关于10.0系统权限方面的改变,大家可以搜索相关文章,这里主要讲一下存储权限的变化,10.0之前我们在保存或者查询文件时,首先需要申请存储权限: <uses-permission android:name="com.android.laun...
  • 文件存储数据

    2016-05-13 09:20:05
    Android存储数据方式之一——————文件存储数据
  • 数据库与文件系统存储数据的区别

    千次阅读 2019-07-13 10:29:13
    一、文件系统与数据库系统的概念及其发展 1.文件系统  所谓的文件系统简单地说负责存取和管理文件信息的软件结构...操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。  文件系统由三...
  • 盘点分布式文件存储系统

    千次阅读 2021-02-08 22:14:23
    在项目的数据存储中,结构化数据通常采用关系型数据库,非结构化数据(文件)的存储就有很多种方式,服务器本地存储、Nas挂载、ftp等等,今天就来盘点一下,分布式文件存储系统。
  • 时隔一天,上一篇文章《文件存储》刚一停笔,今天上午就解决了困扰我已久的文件上传问题。 站在一个已实现功能的角度来重新看待这个文件上传的业务:编辑页面选择jar包,然后通过form表单提交,上传到后台程序,...
  • 一般存储数据无非分为SP存储和数据库还有文件存储,这里我们说下文件存储openFileOutput和取出数据openFileInput我们在一不小心退出APP如果再无退出之前不将数据保存的话数据是会丢失的,那么如何保存呢?...
  • 利用数据存储的SharedPreferences开发技术,实现了一个简易的短信草稿箱,其功能模块包括保存短信、读取短信等。
  • “Ceph是一个开源的、统一的、分布式的存储系统”,这是我们宣传Ceph时常说的一句话,其中“统一”是说Ceph可以一套存储系统同时提供块设备存储文件系统存储和对象存储三种存储功能。一听这句话,具有一定存储基础...
  • Android中的文件存储数据方式

    万次阅读 多人点赞 2011-06-21 17:54:00
    1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。创建的存储文件保存在/data/data//files文件夹下。 2.操作。保存文件内容:通过Context...
  • C语言二进制方式读写文件数据

    万次阅读 多人点赞 2018-12-12 06:35:40
    buffer:一个存储区的起始地址,以该地址开始的存储区的数据即是保存文件中的数据,可以是数组或指针类型; size:单个数据项的大小(单位:字节); count:数据项数量; fp:FILE类型指针,该指针对应的文件即....
  • 在Oracle数据库存储超大文件时、以流的方式分段读取和保存,避免内存溢出。本工具类提供两个方法: 1、读取文件保存到Oracle数据库Blob字段(支持超大文件) 2、从数据库中读出大字段到文件中(分块读取)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,574,071
精华内容 1,029,628
关键字:

文件存储方式