CN113934691A - 访问文件的方法、电子设备及可读存储介质 - Google Patents

访问文件的方法、电子设备及可读存储介质 Download PDF

Info

Publication number
CN113934691A
CN113934691A CN202111492985.0A CN202111492985A CN113934691A CN 113934691 A CN113934691 A CN 113934691A CN 202111492985 A CN202111492985 A CN 202111492985A CN 113934691 A CN113934691 A CN 113934691A
Authority
CN
China
Prior art keywords
file
temporary
information
modified
electronic device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111492985.0A
Other languages
English (en)
Other versions
CN113934691B (zh
Inventor
李子祺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202111492985.0A priority Critical patent/CN113934691B/zh
Publication of CN113934691A publication Critical patent/CN113934691A/zh
Application granted granted Critical
Publication of CN113934691B publication Critical patent/CN113934691B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种访问文件的方法、电子设备及可读存储介质,属于终端技术领域。该方法包括:基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容。接收第三电子设备对文件的访问请求,访问请求携带访问模式的指示信息和第一文件片信息。在指示信息指示的是只读模式的情况下,若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,则从临时修改文件中读取第一文件片。将读取的第一文件片发送给第三电子设备。本申请基于临时修改文件进行读写和读等访问操作,无需增加读写锁机制,实现了多个电子设备在相同时间对文件的访问。

Description

访问文件的方法、电子设备及可读存储介质
技术领域
本申请涉及终端技术领域,特别涉及一种访问文件的方法、电子设备及可读存储介质。
背景技术
在多电子设备访问文件的场景中,当电子设备A正在修改电子设备B上的某文件时,如果另一个电子设备C读取该文件,则会读取到该文件的一个中间状态。若电子设备C需要对读取的文件进行校验操作,则由于读取到的文件不是原始的完整文件,所以会被确认为是非法文件,从而导致操作失败。
在相关技术中,为了避免上述问题,一般会在文件的读写过程中使用读写锁机制,也即当电子设备A修改电子设备B上的某文件时,电子设备B通过读写锁机制锁定该文件,使得其他电子设备(譬如电子设备C)无法读取该文件。
然而,上述实现方式均导致多个电子设备无法同时以不同的访问模式成功访问同一电子设备上的文件。
发明内容
本申请提供了一种访问文件的方法、电子设备及可读存储介质,可以解决相关技术中多个电子设备无法同时以不同的访问模式成功访问同一电子设备上的文件的问题。所述技术方案如下:
第一方面,提供了一种访问文件的方法,应用于第一电子设备中,所述方法包括:
基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容;
接收第三电子设备对文件的访问请求,访问请求携带访问模式的指示信息和第一文件片信息;
在指示信息指示的是只读模式的情况下,若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,则从临时修改文件中读取第一文件片;
将读取的第一文件片发送给第三电子设备。
如此,在第二电子设备读写文件时基于临时修改文件进行访问,无需增加读写锁机制。在第三电子设备请求读文件时,若临时修改文件包括待读取的第一文件片且第一文件片已完成修改,则从临时修改文件中读取第一文件片,从而实现了多个电子设备在相同时间对文件的访问。
作为本申请的一个示例,所述第一文件片已完成修改的确定方式包括:
获取第一标志位,所述第一标志位用于标识所述临时修改文件中最近已完成修改的内容截止位置;
若所述第一文件片位于所述内容截止位置之前,则确定所述第一文件片已完成修改。
如此,在判断第一文件片是否已完成修改时,通过获取最新的标志位来定位已经完成修改的全部内容,从而根据定位的内容,确定第一文件片是否已完成修改,可以提高判断的有效性。
作为本申请的一个示例,确定所述临时修改文件是否包括所述第一文件片信息指示的第一文件片,包括:
基于所述第一文件片信息进行哈希计算,得到第一哈希值;
从所述临时修改文件对应的哈希表中查询所述第一哈希值对应的临时位置信息,得到至少一个临时位置信息,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置;
根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
如此,基于第一文件片信息进行哈希计算,然后结合哈希表和映射关系表查询临时修改文件中是否包括第一文件片,相比于逐个对比可以提高查询效率。
作为本申请的一个示例,所述根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,包括:
从所述临时修改文件对应的映射关系表中,依次确定与所述至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息;
每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较;
若所确定的文件片信息中存在与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中包括所述第一文件片。
如此,通过查询临时修改文件对应的映射关系表,确定临时修改文件中是否包括第一文件片,提高了查询效率。
作为本申请的一个示例,所述临时修改文件的数量为多个,多个临时修改文件中的每个临时修改文件均对应有哈希表和映射关系表;
所述每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较之后,还包括:
若与所述各个临时位置信息存在映射关系的文件片信息中,不存在与所述第一文件片信息相同的文件片信息,则基于所述第一哈希值,依次遍历所述多个临时修改文件中其他各个临时修改文件对应的哈希表和映射关系表;
在遍历过程中,查询是否存在与所述第一文件片信息相同的文件片信息;
若遍历结束后仍未查询到与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中不包括所述第一文件片。
如此,通过遍历多个临时修改文件中各个临时修改文件对应的哈希表和映射关系表,可以快速查询到多个临时修改文件中是否存在包括第一文件片的临时修改文件,提高了查询速度,并且,通过遍历也提高了判断第一文件片是否位于临时修改文件中的有效性。
作为本申请的一个示例,所述方法还包括:
当临时文件内容写回条件被触发时,重新确定所述第一标志位;
将所述临时修改文件中位于重新确定的所述第一标志位指示的内容截止位置之前的内容以片为单位写回所述文件中。
如此,在满足临时文件内容写回条件的情况下,将临时修改文件中已完成修改的内容以片为单位写回原始的文件中,也即将修改的内容整合至文件中,如此,可以便于后续集中管理。
作为本申请的一个示例,所述方法还包括:
当将位于所述重新确定的所述第一标志位指示的内容截止位置之前的内容写回成功后,若所述临时修改文件中不包括未被写回的内容,且不存在电子设备正在访问所述临时修改文件中的内容,则删除所述临时修改文件、以及所述临时修改文件对应的哈希表和映射关系表;
其中,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
如此,当临时修改文件中不包括未被写回的内容时,如果不存在电子设备正在访问临时修改文件,可以将临时修改文件及其相关数据删除,可以在一定程度节省存储空间。并且,对于后续的访问,在查询临时修改文件中是否存在待访问的文件片时,可以避免第一电子设备因遍历这些临时修改文件而做大量查询工作。
作为本申请的一个示例,所述临时文件内容写回条件被触发满足如下条件中的任一项:
所述第二电子设备的读写操作结束;或者,
所述第三电子设备的读操作结束;或者,
所述第二电子设备的读写操作结束,以及所述第三电子设备的读操作结束;或者,
所述临时修改文件已写满。
也即在第二设备和/或第三设备访问结束时,或者在临时修改文件写满时,可以将临时修改文件中的内容写回文件中,以便于后续可以对临时修改文件进行删除等处理,进而节省存储空间,提高查询效率。
作为本申请的一个示例,所述基于临时修改文件接收第二电子设备对文件的读写操作之后,还包括:
当所述第二电子设备的读写操作结束时,获取第二哈希值,以及在所述临时修改文件中确定所述第二电子设备读写的第二文件片的临时文件位置,所述第二哈希值是根据所述第二文件片的第二文件片信息确定的;
在所述哈希表中增加所述第二哈希值、所述第二文件片的临时文件位置之间的对应关系,以及在所述映射关系表中增加所述第二文件片的临时文件位置、所述第二文件片信息之间的映射关系。
如此,在读写操作结束后,为了便于后续能够从临时修改文件中准确读取到该内容,第一电子设备建立该内容在临时修改文件中与在原始的文件中的位置映射关系,并且,通过更新哈希表和映射关系表的方式建立该位置映射关系,从而可以便于后续快速、有效地查询该内容。
作为本申请的一个示例,所述方法还包括:
在所述临时修改文件中包括所述第一文件片的情况下,若所述第一文件片未完成修改,则根据所述第一文件片信息,从所述文件中读取所述第一文件片。
在临时修改文件中包括第一文件片的情况下,如果第一文件片没有完成修改,此时第一文件片中的修改内容是不可读取的,而为了使得读取数据成功,从文件中读取第一文件片的原始内容。
第二方面,提供了一种访问文件的装置,配置于第一电子设备中,所述装置包括:
第一接收模块,用于基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容;
第二接收模块,用于接收第三电子设备对文件的访问请求,访问请求携带访问模式的指示信息和第一文件片信息;
读取模块,用于在指示信息指示的是只读模式的情况下,若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,则从临时修改文件中读取第一文件片;
发送模块,用于将读取的第一文件片发送给第三电子设备。
作为本申请的一个示例,所述读取模块还用于:
获取第一标志位,所述第一标志位用于标识所述临时修改文件中最近已完成修改的内容截止位置;
若所述第一文件片位于所述内容截止位置之前,则确定所述第一文件片已完成修改。
作为本申请的一个示例,所述读取模块还用于:
基于所述第一文件片信息进行哈希计算,得到第一哈希值;
从所述临时修改文件对应的哈希表中查询所述第一哈希值对应的临时位置信息,得到至少一个临时位置信息,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置;
根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
作为本申请的一个示例,所述读取模块还用于:
从所述临时修改文件对应的映射关系表中,依次确定与所述至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息;
每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较;
若所确定的文件片信息中存在与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中包括所述第一文件片。
作为本申请的一个示例,所述临时修改文件的数量为多个,多个临时修改文件中的每个临时修改文件均对应有哈希表和映射关系表;所述读取模块还用于:
若与所述各个临时位置信息存在映射关系的文件片信息中,不存在与所述第一文件片信息相同的文件片信息,则基于所述第一哈希值,依次遍历所述多个临时修改文件中其他各个临时修改文件对应的哈希表和映射关系表;
在遍历过程中,查询是否存在与所述第一文件片信息相同的文件片信息;
若遍历结束后仍未查询到与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中不包括所述第一文件片。
作为本申请的一个示例,所述读取模块还用于:
当临时文件内容写回条件被触发时,重新确定所述第一标志位;
将所述临时修改文件中位于重新确定的所述第一标志位指示的内容截止位置之前的内容以片为单位写回所述文件中。
作为本申请的一个示例,所述读取模块还用于:
当将位于所述重新确定的所述第一标志位指示的内容截止位置之前的内容写回成功后,若所述临时修改文件中不包括未被写回的内容,且不存在电子设备正在访问所述临时修改文件中的内容,则删除所述临时修改文件、以及所述临时修改文件对应的哈希表和映射关系表;
其中,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
作为本申请的一个示例,所述临时文件内容写回条件被触发满足如下条件中的任一项:
所述第二电子设备的读写操作结束;或者,
所述第三电子设备的读操作结束;或者,
所述第二电子设备的读写操作结束,以及所述第三电子设备的读操作结束;或者,
所述临时修改文件已写满。
作为本申请的一个示例,所述第一获取模块还用于:
当所述第二电子设备的读写操作结束时,获取第二哈希值,以及在所述临时修改文件中确定所述第二电子设备读写的第二文件片的临时文件位置,所述第二哈希值是根据所述第二文件片的第二文件片信息确定的;
在所述哈希表中增加所述第二哈希值、所述第二文件片的临时文件位置之间的对应关系,以及在所述映射关系表中增加所述第二文件片的临时文件位置、所述第二文件片信息之间的映射关系。
作为本申请的一个示例,所述读取模块还用于:
在所述临时修改文件中包括所述第一文件片的情况下,若所述第一文件片未完成修改,则根据所述第一文件片信息,从所述文件中读取所述第一文件片。
第三方面,提供了一种电子设备,所述电子设备的结构中包括处理器和存储器,所述存储器用于存储支持电子设备执行上述第一方面所提供的访问文件的方法的程序,以及存储用于实现上述第一方面所述的访问文件的方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述电子设备还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的访问文件的方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的访问文件的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是本申请实施例提供的一种电子设备的软件框架示意图;
图3是本申请实施例提供的一种应用场景的示意图;
图4是本申请实施例提供的一种访问文件的方法流程示意图;
图5是本申请实施例提供的一种映射关系的示意图;
图6是本申请实施例提供的一种临时修改文件的示意图;
图7是本申请实施例提供的一种文件与映射关系的示意图;
图8是本申请实施例提供的另一种访问文件的方法流程示意图;
图9是本申请实施例提供的另一种应用场景的示意图;
图10是本申请实施例提供的一种写回的方法流程示意图;
图11是本申请是实施例提供的一种访问文件的方法流程示意图;
图12是本申请实施例提供的一种访问文件的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为更好地理解本申请实施例,以下对实施例中可能涉及的术语或概念进行解释说明。
文件句柄:描述了与打开文件相关的属性信息,比如该属性信息包括但不限于偏移量、文件的大小等信息。
文件分片:将一个文件按照一定的大小切分成一个一个的小块,每个小块即是一个文件片,每个文件片的大小可以根据实际需求进行设置。作为本申请的一个示例,每个文件片的大小可以为1MB。根据实现方式不同,文件分片可分为物理分片和逻辑分片。物理分片是指对外呈现的是一个完整文件,但对于文件系统而言,实际存储的是文件的多个文件片。逻辑分片则无论是对外,还是对于文件系统,都只有一个文件,只是为文件包括的每个文件片设置了一个逻辑上唯一的文件片信息,也即一个文件片信息用于唯一的指示一个文件片。作为本申请的一个示例,采用逻辑分片进行分片处理。在文件的访问过程中,跨电子设备间以文件片为单位对文件执行读或读写等操作。
临时修改文件:建立在文件分片的基础上。在一种场景下,当需要对文件中的某部分内容进行修改时,将该部分内容以片为单位写入临时修改文件中,之后,基于临时修改文件执行修改操作。且每次在临时修改文件中读写结束后,在本次的修改内容之后添加标志位,以表示截止到该标志位为止,该部分内容的读写操作已完成。作为本申请的一个示例,临时修改文件也可进行逻辑分片处理,也即临时修改文件中也包括多个临时文件片,多个临时文件片中每个临时文件片的大小与原始的文件中每个文件片的大小相同,譬如每个临时文件片的大小亦是1MB。
标志位:用于指示临时修改文件中已完成修改的内容截止位置。一个临时修改文件中可能包括一个或者多个标志位。当一个临时修改文件中包括多个标志位时,多个标志位根据修改的时间先后顺序递增或递减,以指示临时修改文件中哪些内容是在先修改的,以及哪些内容是在后修改的。譬如,假设临时修改文件中包括标志位1、标志位2和标志位3,说明临时修改文件中的内容包括3次修改。其中,位于标志位1指示的内容截止位置之前的内容是最早完成修改的,位于标志位2指示的内容截止位置与标志位3指示的内容截止位置之间的内容是最晚完成修改的,或者说是最近一次修改的。
接下来对本申请实施例涉及的执行主体进行介绍。作为示例而非限定,本申请实施例提供的方法可以由电子设备执行。在一个实施例中,电子设备中包括能够对文件执行读、读写之类操作的文件应用程序。在一个示例中,电子设备可以包括但不限于手机、平板电脑、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)之类的设备,本申请实施例对此不作限定。
图1是本申请实施例提供的一种电子设备的结构示意图。参见图1,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serialbus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,比如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口,如可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。比如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他电子设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的整数。
内部存储器121可以用于存储计算机可执行程序代码,计算机可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,来执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100在使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,比如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
接下来对电子设备100的软件系统予以说明。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的安卓(Android)系统为例,对电子设备100的软件系统进行示例性说明。
图2是本申请实施例提供的一种电子设备100的软件系统的框图。参见图2,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统层,以及内核层。
作为本申请的一个示例,应用程序层可以包括一系列应用程序包。譬如应用程序包可以包括文件等应用程序。文件应用程序可以用于执行文件的读或读写等操作。
作为本申请的一个示例,如图2所示,文件应用程序包括句柄控制模块和文件读写模块,句柄控制模块用于处理文件句柄。譬如对文件句柄进行解析,以确定访问文件所需的相关参数,再如对文件句柄进行回收等处理。文件读写模块用于根据访问文件所需的相关参数,实现对文件的读、读写等操作。具体实现可以参见下文各个实施例。其中,文件句柄包括但不限于只读文件句柄、读写文件句柄等。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图2所示,应用程序框架层可以包括内容提供器,资源管理器等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块,比如:媒体库(Media Libraries)等。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。
内核层是硬件和软件之间的层。作为本申请的一个示例,内核层包含文件系统等。文件系统用于对文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地,主要负责建立文件,以及存入、读出、修改、转储文件等。
接下来对本申请实施例可能涉及的应用场景进行介绍。示例性地,请参考图3,图3是根据一示例性实施例示出的一种应用场景的示意图。其中包括电子设备A、电子设备B、电子设备C,其中各个电子设备可以是同构设备,也可以是异构设备,譬如各个电子设备可以分别是手机、平板电脑、笔记本电脑。
假设电子设备C中存储有文件f,则电子设备A和电子设备B可以同时访问文件f,且在任意时间内,仅支持电子设备A和电子设备B中一个电子设备拥有对文件f的修改权限。譬如,若电子设备A以读写模式访问文件f,则在相同时间内,只允许电子设备B以只读模式访问文件f。再如,若电子设备A以只读模式访问文件f,则在相同时间内,允许电子设备B以读写模式访问文件f。
在一个实施例中,以电子设备A是手机,电子设备B是平板电脑,电子设备C是笔记本电脑为例。假设笔记本电脑C上的文件f是相册。笔记本电脑支持第一用户通过手机编辑该相册,在此过程中,笔记本电脑支持第二用户(譬如是第一用户的家属)在平板电脑上同步查看该相册。进一步地,第一用户在手机上编辑结束后,无论第二用户是否仍在继续查看该相册,若存在第三用户(譬如是第一用户的另一个家属)通过其他电子设备请求继续编辑或查看该相册,则笔记本电脑C允许第三用户编辑或查看,此时第三用户在其他电子设备上可以查看到经第一用户编辑后的相册内容。
在另一个实施例中,以电子设备A是笔记本电脑A,电子设备B是笔记本电脑B,电子设备C是笔记本电脑C为例。假设笔记本电脑C上的文件f是某产品使用说明。在一个示例中,在第一用户(譬如公司的某员工)在笔记本电脑A上编辑该产品使用说明的过程中,笔记本电脑C支持第二用户(譬如该公司的另一个员工)在笔记本电脑B上同步查看该产品使用说明,此时第二用户在笔记本电脑B上查看到的产品使用说明是原始内容。进一步地,在第一用户在笔记本电脑A上编辑该产品使用说明结束后,无论第二用户是否仍在继续查看该产品使用说明,若存在第三用户通过其他电子设备请求查看或编辑该产品使用说明,则笔记本电脑C支持第三用户在其他电子设备上同步查看或编辑,此时第三用户在其他电子设备上读取到的是经过第一用户编辑后的产品使用说明。
接下来以电子设备A读写文件f为例对电子设备之间的交互流程进行介绍。通常包括如下(1)-(7)几个实现步骤:
(1)电子设备A向电子设备C请求以读写模式访问文件f。
在一个示例中,电子设备A向电子设备C发送读写请求,该读写请求中可以携带待访问内容的标识信息和访问模式,譬如访问模式是读写模式。
如前文所述,由于跨电子设备间的文件访问是以文件片为单位,所以在一个示例中,标识信息可以包括待访问的一个或者多个文件片中每个文件片的文件片信息。
(2)电子设备C对该读写请求进行解析,得到标识信息和访问模式。
示例性的,电子设备C通过应用层的文件应用程序对该读写请求进行解析。
(3)电子设备C按照访问模式,获取标识信息对应的内容。
在一个示例中,请参考图2,电子设备C可以通过文件应用程序向内核层的文件系统申请该访问权限对应的文件句柄。文件系统分配相应权限的文件句柄,也即分配读写文件句柄。读写文件句柄中携带访问文件f所需的相关参数。
文件应用程序获取读写文件句柄后,对读写文件句柄进行解析,譬如文件应用程序通过句柄控制模块对读写文件句柄进行解析,以得到该相关参数。之后,文件应用程序通过文件读写模块调用读文件接口,以基于读写文件的相关参数,读取标识信息对应的内容。
(4)电子设备C将获取的内容复制至临时修改文件中,另外,以数据包的形式将所获取的内容反馈给电子设备A。
其中,临时修改文件可以用于被执行修改操作。
在一个示例中,由文件读写模块打开或建立临时修改文件,然后调用写文件接口,以将获取的内容复制至临时修改文件中。另外,以数据包的形式将所获取的内容反馈给电子设备A。
(5)电子设备A接收数据包,并展示其中的内容。
在一个实施例中,电子设备A接收数据包后,可以直接在文件应用程序中展示其中的内容,譬如在接收到一个照片后,直接在当前界面中展示该照片。
在另一个实施例中,电子设备A接收数据包后,在展示其中的内容之前,也可以在当前界面中显示提示消息,该提示消息用于指示用户确认是否展示接收到的数据包中的内容。当基于该提示消息接收到确认展示指令时,说明用户确认展示该内容,该种情况下,电子设备A展示该内容。
当然本申请实施例是以接收数据包后展示其中的内容为例进行说明。在另一实施例中,若基于提示消息接收到取消展示指令时,说明用户不需要电子设备A展示该内容,此时电子设备A不展示该内容。
(6)若电子设备A对内容修改,则将修改内容以数据包的形式发送给电子设备C。
(7)电子设备C将接收的修改内容写入临时修改文件中,从而实现对内容的修改。
示例性地,可以由文件读写模块通过写文件接口将修改内容写入临时修改文件中。
需要说明的是,上述是以电子设备A与电子设备C之间的交互通过文件应用程序实现为例进行说明,也即是,电子设备A和电子设备C中均安装有能够用于访问文件的文件应用程序,如此,电子设备A与电子设备C之间的数据交互即可通过文件应用程序实现。在另一个实施例中,电子设备A与电子设备C之间的交互也可以通过系统服务实现,本申请实施例对此不作限定。
同理,若电子设备B以只读模式访问文件f,则按照上述读写流程中的读流程进行访问,这里不再详细赘述。
基于上述图3所示的应用场景,接下来对文件访问的具体实现过程进行详细介绍。
请参考图4,图4是根据一示例性实施例示出的一种访问文件的方法流程示意图,作为示例而非限定,该方法可以包括如下内容:
41:电子设备C接收电子设备A对文件f的读写请求。
在一个示例中,读写请求中可以包括电子设备A 待读写的第二文件片的第二文件片信息。
42:电子设备C判断是否存在访问冲突。
在本申请实施例中,当多个电子设备同时访问文件f时,在任意时间内,仅支持多个电子设备中的一个电子设备拥有对文件f的修改权限,也即只允许多个电子设备中的一个电子设备可以对文件f进行修改操作,其他电子设备只能以读模式访问文件f。因此,当电子设备A请求读写文件f时,电子设备C需要判断是否存在访问冲突的问题。
在一种情况下,若不存在其他电子设备正在访问文件f,或者,存在其他电子设备正在访问文件f但其他电子设备的访问模式与读写模式不冲突,譬如其他电子设备正在以只读模式访问文件f,则电子设备C确定不存在访问冲突,也即电子设备C允许电子设备A对文件f进行读写,此时进入如下步骤44。
在另一种情况下,若存在其他电子设备正在访问文件f,且其他电子设备正在以读写模式访问文件f,则确定电子设备C的访问模式与其他电子设备的访问模式存在冲突,该种情况下,电子设备C不允许电子设备A读写文件f,此时进入如下步骤43。
43:电子设备C通知电子设备A读写失败。
44:电子设备C判断文件f的大小是否大于或等于文件阈值。
文件阈值可以根据实际需求进行设置,示例性地,文件阈值为16MB。
若文件f大于或等于文件阈值,说明文件f较大,此时可以确定文件f是大文件。否则,若文件f小于文件阈值,说明文件较小,此时可以确定文件f是小文件。
若文件f的大小大于或等于文件阈值,则进入如下步骤45,否则,若文件f的大小小于文件阈值,在进入如下步骤52。
需要说明的是,该步骤44是可选步骤。在另一实施例中,电子设备C在确定不存在访问冲突后,也可以直接进入如下步骤45,也即是,电子设备C确定不存在访问冲突后也可以不判断文件f的大小,而是直接查询是否存在临时修改文件。也就是说,无论是大文件还是小文件,均可以采用如下步骤45至步骤51的流程读取文件f。
45:电子设备C查询是否存在临时修改文件。
临时修改文件包括文件f中待修改和/或已修改的内容。
在本申请实施例中,是否存在临时修改文件的原因在于:一方面,为了避免对原始的文件f造成格式损坏等问题,对文件f的修改操作都是基于临时修改文件执行的,也即当需要修改文件f中的某个或某些文件片时,电子设备C读取这些文件片,然后将读取的文件片复制至临时修改文件中,之后的修改都是对临时修改文件进行操作。另一方面,临时修改文件中可能包括有已完成修改的内容。所以在一种可能的情况下,若存在其他电子设备正在读文件f,且其他电子设备读取的内容存在于临时修改文件,则其他电子设备正在访问临时修改文件,此时就会存在临时修改文件。当然在另一种可能的情况下,如果不存在其他电子设备正在访问文件f,或者存在其他电子设备正在读文件f但其读取的内容不存在于临时修改文件(譬如其他电子设备读取的内容是从文件f中读取的),则可能就不存在临时修改文件。
当存在临时修改文件时,电子设备C请求读写的内容可能存在于临时修改文件中,若如此,一般需要从临时修改文件中读取该内容。如果不存在临时修改文件,电子设备C请求读写的内容通常是存在于文件f中,此时需要从文件f中读取该内容。所以为了确定从哪里读取电子设备A请求读写的内容,电子设备C先查询是否存在临时修改文件。当存在临时修改文件时,进入如下步骤46,如果不存在临时修改文件,则进入如下步骤48。
46:电子设备C查询临时修改文件中是否存在第二文件片。
在一个示例中,电子设备C查询临时修改文件中是否存在第二文件片的具体实现可以包括:电子设备C基于电子设备A的读写请求中的第二文件片信息进行哈希计算,得到第二哈希值,从临时修改文件对应的哈希表中查询第二哈希值对应的临时位置信息,从临时修改文件对应的映射关系表中,确定与所查询的临时位置信息存在映射关系的文件片信息。如果所确定的文件片信息与第二文件片信息相同,则确定临时修改文件中存在第二文件片。
一个临时修改文件对应有一个哈希表和一个映射关系表。其中,哈希表用于记录哈希值与临时位置信息之间的对应关系,临时位置信息用于指示在临时修改文件中的位置。映射关系表用于记录临时位置信息与文件片信息之间的映射关系。作为本申请的一个示例,哈希表和映射关系表可以存储在内存中,无需存储在磁盘中,如此当发生意外掉电的场景时,相关内容仍可以根据临时修改文件进行重建,也节省了磁盘的存储空间。
如前文所述,临时修改文件也进行了逻辑分片处理。临时修改文件中包括的临时文件片的数量可以根据实际需求进行设置,譬如,临时修改文件中可以包括1024个临时文件片。
由于在文件修改时,修改的文件片是按照顺序的方式连续存储在临时修改文件中,所以为了在读取文件f时能够在临时修改文件中快速查找到待读取的文件片对应的临时文件片,在修改过程中通常会建立修改的文件片在临时修改文件中的临时文件位置与在文件f中的文件信息之间的映射关系。作为本申请的一个示例,为了提高查询速度,通过哈希表和映射关系表建立该映射关系。
其中,哈希表中包括多个位置,每个位置对应一个哈希值,譬如每个位置的位置编号是该位置对应的哈希值,也即第一个位置对应的哈希值为1,第二个位置对应的哈希值为2,第三个位置对应的哈希值为3,以此类推。每个位置上存储有至少一个元素,每个元素代表临时修改文件中的一个临时位置信息。
需要说明的是,一个哈希值可能对应有多个临时位置信息的原因在于:由于使用哈希表存在哈希冲突问题,为此,本申请实施例采用链地址法解决哈希冲突问题。也即若临时修改文件中某个临时文件片无法存储文件片的内容,则可以查询该某临时文件片的下一个临时文件片,若所查询的下一个临时文件片可以存储,则直接将文件片的内容存储至所查询的下一个临时文件片中。若所查询的下一个临时文件片无法存储,则按照该种方式继续查询下一个临时文件片,直至找到合适的临时文件片为止。如此,一个哈希值就可能对应有多个临时位置信息。
映射关系表包括多个位置,每个位置对应一个临时位置信息,譬如每个位置的位置编号是该位置对应的临时位置信息,也即第一个位置对应的临时位置信息是1,第二个位置对应的临时位置信息为2,第三个位置对应的临时位置信息为3,以此类推。每个位置上存储有至少一个元素,每个元素代表一个文件片信息。
示例性地,请参考图5,哈希表中每个格子上方标注的数值代表哈希值,每个格子内的元素为临时位置信息。譬如,哈希表中的第一个位置上包括一个临时位置信息,该临时位置信息为3,也即意味着哈希值1与临时修改文件中的第3个临时位置对应。再如,哈希表中的第3个位置上包括两个临时位置信息,分别是1和2,意味着哈希值3分别与临时修改中的第1个临时位置和第2个临时位置对应。
请参考图5,映射关系表中每个格子上方标注的数值代表临时位置信息,每个格子内的元素为文件片信息。譬如,映射关系表中的第一个位置上包括的文件片信息为5,也即意味着临时修改文件中第一个临时文件片对应的是文件f中的第5个文件片的内容。再如,映射关系表中的第二个位置上包括的文件片信息为6,也即意味着临时修改文件中第二个临时文件片对应的是文件f中的第6个文件片的内容。
在读文件时,基于第二文件片信息,通过查询临时修改文件对应的哈希表和映射关系表,即可确定临时修改文件中是否存在待读取的文件片。请参考图5,假设电子设备A的读写请求中携带的第二文件片信息是10,也即电子设备A请求读写文件f中的第10个文件片。若基于10通过哈希计算确定的第二哈希值是1,则通过查询哈希表可以确定与第二哈希值对应的临时位置信息是3,然后根据映射关系表可以查询到与临时位置信息3存在映射关系的文件片信息是10,与第二文件片信息相同,说明临时修改文件中的第三个临时文件片中存储的确实是文件f中的第10个文件片的内容,所以可以确定临时修改文件中存在第二文件片。
若所确定的文件片信息与第二文件片信息不相同,如果第二哈希值对应的临时位置信息的数量仅包括一个,则确定临时修改文件中不存在第二文件片。如果第二哈希值对应的临时位置信息的数量为多个,则从映射关系表中,遍历其他临时位置信息中各个临时位置信息对应的文件片信息。每确定一个文件片信息,将所确定的文件片信息与第二文件片信息进行比较。若存在与第二文件片信息相同的文件片信息,则可以确定临时修改文件中包括第二文件片。若遍历结束后仍不存在与第二文件片信息相同的文件片信息,且不存在其他临时修改文件,则可以确定临时修改文件中不包括第二文件片。
示例性地,若基于第二文件片信息10通过哈希计算确定的第二哈希值是3,则通过查询哈希表可以确定与第二哈希值对应的临时位置信息是1和2,然后根据映射关系表可以查询到与临时位置信息1存在映射关系的文件片信息是5,与第二文件片信息不相同,也即临时修改文件中的第1个临时文件片中存储的是文件f中的第5个文件片的内容,而不是第10个文件片的内容。另外根据映射关系表查询到与临时位置信息2存在映射关系的文件片信息是6,与第二文件片信息也不相同,也即临时修改文件中的第2个临时文件片中存储的是文件f中的第6个文件片的内容,而不是第10个文件片的内容。该种情况下,如果不存在其他临时修改文件,则可以确定临时修改文件中不存在第二文件片。
当然,若历结束后仍不存在与第二文件片信息相同的文件片信息,如果存在其他临时修改文件,则可以按照上述方式,查询其他临时修改文件中是否包括第二文件片。其中,其他临时修改文件中的每个临时修改文件对应有各自的哈希表和映射关系表。
值得一提的是,相比于逐个比较的方式查询临时修改文件中是否包括第二文件片,本申请实施例中基于哈希表,结合映射关系表进行查询,可以提高查询效率。
另外需要说明的是,存在多个临时修改文件的一种可能性在于,由于临时修改文件中设置了最大容量,所以当一个临时修改文件写满时,如果仍存在需要修改的内容,可以重新建立一个临时修改文件,此时就会存在多个临时修改文件。
如果临时修改文件中包括第二文件片,则进入如下步骤47。反之,若临时修改文件中不存在第二文件片,则进入如下步骤48。
47:电子设备C从临时修改文件中读取第二文件片。
若临时修改文件中包括第二文件片,由于在任意时间内仅支持一个电子设备拥有对文件f的修改权限,所以可以确定此时临时修改文件中的内容均是已经完成修改的,也即不存在正在被修改的情况,因此,电子设备C可以直接从临时修改文件中读取第二文件片的内容。
48:电子设备C从文件f中读取第二文件片的内容,并将读取的内容复制至临时修改文件中。
在一个示例中,电子设备C中不存在临时修改文件,或者,存在的临时修改文件中不包括电子设备A请求读取的第二文件片,该种情况下,电子设备C从原始文件(也即文件f)中读取第二文件片的内容。为了支持电子设备C的修改操作,电子设备C将复制的内容复制至临时修改文件中。
在一个实施例中,若电子设备C中存在临时修改文件(但不包括第二文件片),则电子设备C可以从文件f中读取的内容按序复制到临时修改文件中。在另一个实施例中,若电子设备C存在临时修改文件且临时修改文件已写满,则电子设备C可以重新建立一个临时修改文件,并将读取的内容复制至重新建立的临时修改文件中。
49:电子设备C基于临时修改文件,接收电子设备A的读写操作。
具体地,电子设备C将读取的内容发送给电子设备A。当电子设备C接收到电子设备A的写请求时,将电子设备A调用写文件接口,以将写请求中携带的数据写入至临时修改文件中。如此即实现了电子设备A对文件f的读写操作。
50:在电子设备A读写完成后,电子设备C在临时修改文件中设置标志位。
具体地,在读写句柄关闭后,为了标记本次修改的内容,在临时修改文件中,电子设备C在本次已完成修改的内容之后添加标志位。在一个实施例中,若临时修改文件中包括其他标志位,则按照标志位递增或者递减的顺序,设置本次修改对应的标志位。譬如请参考图6,假设本次修改的文件片j位于临时修改文件中的第3个临时位置,且该临时修改文件中包括历史修改的文件片和对应的标志位1,则在本次修改结束后,在文件片j之后设置标志位,譬如设置的标志位是2。
51:电子设备C更新哈希表和映射关系表。
由于临时修改文件中新增了内容,所以为了便于后续查询该内容,需要对临时修改文件对应的哈希表和映射关系表进行更新,以增加该内容在临时修改文件中的临时位置与在文件f中所属的文件片之间的映射关系。
譬如请参考7,可以获取第二文件片信息(假设为10)对应的第二哈希值,以及确定该内容在临时修改文件中对应的临时位置信息,譬如临时位置信息是3。然后,在哈希表中增加第二哈希值与临时位置信息3之间的对应关系,以及在映射关系表中增加临时位置信息3与第二文件片信息10之间的映射关系。如此,以便于后续当其他电子设备读取该内容时,可以根据哈希表和映射关系表,从该临时修改文件中查询到该内容。
52:电子设备C从文件f中读取全部内容,并复制至临时修改文件中。
对于小文件,由于文件较小的原因,复制全部内容的成本较低,所以,电子设备C可以直接从原始的文件f中读取全部内容,电子设备C建立一个临时修改文件,然后将文件f中的内容全部复制至该临时修改文件中,如此后续电子设备A对文件f的修改是操作该临时修改文件。
另外不难理解,电子设备C在读取文件f后,将文件f中的内容以数据包的形式发送给电子设备A,以便于电子设备A后续基于接收的数据包执行写操作。
53:电子设备C基于临时修改文件,接收电子设备A的读写操作。
在一个示例中,当电子设备C接收到电子设备A的写请求时,调用写文件接口,通过写文件接口将写请求中携带的数据写入临时修改文件中,如此实现对文件f的读写。
当读写操作结束时,电子设备C删除原始的文件f,并将临时修改文件命名成正式文件,也即,利用临时修改文件替换文件f。
在本申请实施例中,当电子设备A以读写模式访问文件f时,将电子设备A请求访问的内容以片为单位拷贝至临时修改文件中,之后,基于临时修改文件执行文件f的修改操作,如此可以避免损坏文件f。另外在读文件时,如果待读取的内容在临时修改文件中,则从临时修改文件中读取,使得电子设备A可以读取到修改后的内容,从而便于基于修改后的内容进行写操作,提高了读写的有效性。
基于上述实施例,请参考图8,图8是根据另一示例性实施例示出的一种访问文件的方法流程图。作为示例而非限定,本实施例以该方法应用于上述图3所示的实施环境中为例进行说明,该方法可以包括如下内容:
81:电子设备C接收电子设备A在临时修改文件中对文件f的读写操作。
电子设备A对文件f的读写过程可以参见上述实施例,这里不再详细介绍。
82:电子设备C接收电子设备B以只读模式对文件f的访问请求,访问请求中携带第一文件片信息。
在一个示例中,访问请求中还可以携带有访问模式,譬如访问模式为只读模式。
在一个示例中,第一文件片信息的数量为一个,也即待读取的第一文件片的数量是一个。
在另一个示例中,第一文件片信息的数量也可能是多个,也即待读取的第一文件片的数量是多个。需要说明的是,当第一文件片信息的数量是多个时,电子电子设备C可以按照本申请实施例提供的方法依次读取多个第一文件片中的每个第一文件片。
由于电子设备A是以读写模式访问文件f,而电子设备B是请求以只读模式访问文件f,这两种访问模式不存在冲突,所以电子设备C允许电子设备B读取文件f。在一个示例中,电子设备C可以通过文件应用程序调用打开文件接口,相应的,文件系统分配只读文件句柄,该只读文件句柄中可以包括读取文件f所需的相关参数。在一个示例中,该只读文件句柄中包括文件f的大小信息。
需要说明的是,由于在任意时间内仅支持多个电子设备中的一个电子设备拥有对文件f的修改权限,所以如果电子设备B是以读写模式请求访问文件f,则将读写失败,也即电子设备C不允许电子设备B访问文件f。
83:电子设备C获取第一标志位。
第一标志位用于标识临时修改文件中最近已完成修改的内容截止位置。
作为本申请的一个示例,在文件f的大小大于或等于文件阈值的情况下,获取第一标志位。
在文件f的大小大于或等于文件阈值,说明文件f是大文件。该种情况下,由于电子设备A正在读写文件f,根据前文所述可知,此时存在临时修改文件。在一种可能的情况下,临时修改文件中可能包括已完成修改的内容,且已完成修改的内容中可能包括电子设备B请求读取的第一文件片,若是该种情况,电子设备C就需要从临时修改文件中读取第一文件片。进一步地,在临时修改文件中包括已完成修改的内容的情况下,临时修改文件中可能存在至少一个标志位。至少一个标志位中的每个标志位分别用于指示一次已完成修改的内容截止位置。不难理解,若存在多个标志位,则说明临时修改文件中包括经多次修改的内容。多个标志位中每个标志位的大小可以代表修改时间的先后,示例性地,标志位越小,代表其指示的内容截止位置之前的内容完成修改的时间越早。
所以,为了确定是否能够从临时修改文件中读取第一文件片,电子设备C从至少一个标志位中确定用于指示最近一次完成修改的内容截止位置的标志位,也即获取第一标志位。在一个示例中,只读文件句柄中包括第一标志位,也即可以从只读文件句柄中获取第一标志位。
譬如请参考图6,多个标志位分别为1和2,其中1指示的内容截止位置之前的内容是在1小时之前修改的,也即是,在1小时前对文件f中的第i个文件片和第i+1个文件片进行了修改,其中i为大于1的整数。2指示的内容截止位置之前的内容是在10分钟前修改的,也即在10分钟前对文件f中的第j个文件片进行了修改,其中j为大于1的整数。在该种情况下,电子设备C获取的第一标志位是2。
在一种可能的情况下,若未获取到第一标志位,说明临时修改文件中不存在已完成修改的内容,或者说临时修改文件中的内容都在正在修改中的内容。该种情况下,电子设备C进入如下步骤86。
作为本申请的一个示例,若文件f的大小小于文件阈值,说明文件f是小文件。该种情况下,在电子设备A读写文件f的过程中,若电子设备B向电子设备C请求访问文件f,如果电子设备B是以只读模式访问,则电子设备B将读取到的是文件f的原始文件。如果电子设备B是以读写模式访问,则电子设备B将读取文件f失败。
84:若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片位于第一标志位指示的内容截止位置之前,则电子设备C从临时修改文件中读取第一文件片。
作为本申请的一个示例,电子设备C确定临时修改文件是否包括第一文件片信息指示的第一文件片的具体实现可以包括如下几个子步骤:
A:基于第一文件片信息进行哈希计算,得到第一哈希值。
示例性地,假设第一文件片信息是13,经过哈希计算后,得到的第一哈希值是4。
B:从临时修改文件对应的哈希表中查询第一哈希值对应的临时位置信息。
如前文所述,临时修改文件对应有哈希表,为了查询临时修改文件中是否包括第一文件片,可以先根据第一哈希值,从哈希表中查询对应的临时位置信息。根据前文记载可知,此时可能从哈希表中查询到一个与第一哈希值对应的临时位置信息,也可能查询到多个与第一哈希值对应的临时位置信息,也即可以得到至少一个临时位置信息。譬如请参考图5,根据哈希表可以确定第一哈希值4对应的临时文件信息是4。
C:根据第一文件片信息、至少一个临时位置信息、临时修改文件对应的映射关系表,确定临时修改文件中是否包括第一文件片。
作为本申请的一个示例,根据第一文件片信息、至少一个临时位置信息、临时修改文件对应的映射关系表,确定临时修改文件中是否包括第一文件片的具体实现可以包括:从临时修改文件对应的映射关系表中,依次确定与至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息。每确定一个文件片信息,将所确定的文件片信息与第一文件片信息进行比较。若所确定的文件片信息中存在与第一文件片信息相同的文件片信息,则确定临时修改文件中包括第一文件片。
继续以上述例子为例,假设第一文件片信息是13,经过哈希计算可以确定第一哈希值是4,通过查询哈希表确定第一哈希值对应的临时位置信息是4。请参考图5,通过查询映射关系表确定与临时位置信息4具有映射关系的文件片信息是13,与第一文件片信息相同,说明临时修改文件中第4个临时文件片确实对应的是文件f中的第一文件片,从而确定临时修改文件中包括第一文件片。
在一个实施例中,每确定一个文件片信息,将所确定的文件片信息与第一文件片信息进行比较,若不存在与第一文件片信息相同的文件片信息,且电子设备C中不存在其他临时修改文件,则确定临时修改文件中不包括第一文件片。
示例性地,请参考图5,假设第一文件片信息是10,经过哈希计算确定第一哈希值是3,通过查询哈希表可以确定第一哈希值3对应的临时位置信息包括1和2。根据映射关系表确定与临时位置信息1对应的数值是5,与第一文件片信息不相同,说明临时修改文件中第1个临时文件片对应的是文件f的第5个文件片,而不是第一文件片。进一步地,根据映射关系表确定与临时位置信息2对应的数值是6,与第一文件片信息不相同,说明临时修改文件中第2个临时文件片对应的是文件f的第6个文件片,而不是第一文件片。该种情况下,若不存在其他临时修改文件,则可以确定临时修改文件中不存在第一文件片。
否则,若存在其他临时修改文件,也即若存在多个临时修改文件,则每确定一个文件片信息,将所确定的文件片信息与第一文件片信息进行比较之后,若所确定的文件片信息中不存在与第一文件片信息相同的文件片信息,则基于第一哈希值、多个临时修改文件中的其他临时修改文件对应的哈希表和映射关系表,查询是否存在与第一文件片信息相同的文件片信息。若未查询到与第一文件片信息相同的文件片信息,则确定临时修改文件中不包括第一文件片。
也即若存在多个临时修改文件,则电子设备C可以按照预置的遍历顺序,依次遍历多个临时修改文件中的各个临时修改文件对应的哈希表和映射关系表,以查询是否存在与第一文件片信息相同的文件片信息。也即电子设备C每查询完一个哈希表后,若确定第一文件片信息对应的内容不在所查询的临时修改文件中,则可以按照一定的遍历顺序,继续查询下一个哈希表,从而查询是否存在于下一个哈希表对应的临时修改文件中。直到不存在未查询的哈希表为止,若仍未在临时修改文件中查询到第一文件片信息对应的文件片,说明临时修改文件中不包括第一文件片。在一个示例中,预置的遍历顺序可以是多个临时修改文件中各个临时修改文件的建立时间从晚至早的顺序。
若电子设备C确定临时修改文件包括第一文件片,则继续判断第一文件片是否位于最新标志位指示的内容截止位置之前。如果第一文件片位于最新标志位指示的内容截止位置之前,说明第一文件片已在临时修改文件中完成了修改,该种情况下,电子设备C可以从临时修改文件中读取第一文件片的内容。之后进入如下步骤85。
在一种可能的情况下,若临时修改文件中不包括第一文件片信息且不存在其他临时修改文件,说明第一文件片未被修改;或者,若临时修改文件中包括第一文件片信息但未位于第一标志位指示的内容截止位置之前,说明临时修改文件中与第一文件片对应的内容尚未完成修改。该种情况下,进入如下步骤86。
85:电子设备C将读取的第一文件片发送给电子设备B。
电子设备C将读取的内容以数据包的形式发送电子设备B,如此实现了电子设备B的读取操作。
86:电子设备C从文件f中读取第一文件片信息对应的第一文件片。
若临时修改文件中不存在第一文件片,或者,若临时修改文件中存在第一文件片但第一文件片的内容是不可读取的(譬如位于第一标志位之后),则电子设备C从原始的文件f中读取第一文件片对应的第一文件片,也即此时读取到的是第一文件片信息对应的原始内容。之后,执行步骤85。
在本申请实施例中,在电子设备A以读写模式访问文件f的情况下,如果电子设备B以只读模式请求访问文件f,则可以从临时修改文件中查询是否存在待访问的内容。若不存在待访问的内容,再从原始文件(即文件f)中读取。也即,本申请实施例提供的方法,在一个电子设备对任意一个文件进行修改时,允许另一个电子设备以只读的方式打开该文件,并且在修改过程中可以保证文件f的格式无损坏。由此可见,该方法提供了多电子设备在相同时间访问同一文件且无损坏的能力。
请参考图9,图9是根据一示例性实施例示出的另一种应用场景的示意图。
假设电子设备A读写文件f结束后,电子设备B仍以只读模式访问电子设备C上的文件f(大文件),此时存在另一个电子设备G以读写模式请求访问文件f。则:
91:电子设备A对文件f读写结束。
具体地,当电子设备A对文件f结束时,电子设备C关闭读写句柄。在一个示例中,电子设备C在电子设备A读写结束后,在临时修改文件中设置标志位3,也即标志位3指示的内容截止位置之前的内容已完成修改。
92:电子设备B以只读模式访问文件f。
也即电子设备B继续以只读模式访问文件f。在一个示例中,电子设备B读取标志位2指示的内容截止位置之前的内容。
93:电子设备G以读写模式请求访问文件f。
由于电子设备G对文件f的访问模式与电子设备B的访问模式不冲突,所以,电子设备C为电子设备G分配标志位,也即分配TAG3,如此意味着,电子设备G能够访问临时修改文件中位于TAG3指示的内容截止位置之前的内容。
电子设备C按照上述读的访问方式,从临时修改文件中查询是否存在电子设备G请求读取的文件片。若临时修改文件中存在电子设备G请求读取的文件片,且该文件片的内容位于TAG3指示的内容截止位置之前,则电子设备C直接从临时修改文件中读取内容,并基于临时修改文件进行修改操作。反之,若临时修改文件中不存在电子设备G请求读取的文件片,则电子设备C从文件f中读取,并读取的内容以片为单位依次写入到目前电子设备B正在读写的临时修改文件中,之后基于临时修改文件执行写操作。
在一个实施例中,可能电子设备G对文件f读写后,相隔一定时长,又开始对文件f再次进行写操作,所以,对于电子设备C来说,为了提高写效率,每当接收电子设备G的写请求时,可以判断待写的文件片是否存在于临时修改文件中。若存在,则可以直接在临时修改文件中进行修改,若不存在,则可以按照上述方式读取待读写的内容至临时修改文件中,然后基于临时修改文件进行修改。
基于上述各个实施例,在另一实施例中,还提供了一种文件写回的方法。请参考图10,该方法具体包括如下内容:
101:当临时文件内容写回条件被触发时,重新确定第一标志位,访问状态包括访问结束或访问未结束。
作为本申请的一个示例,临时文件内容写回条件被触发满足如下条件中的任一项:
1.电子设备A的读写操作结束。
也即当电子设备A读写结束时,电子设备C可以将临时修改文件中的内容写回文件f中。
2.电子设备B的读操作结束。
也即当电子设备B读操作结束时,电子设备C可以将临时修改文件中的内容写回文件f中。
3.电子设备A的读写操作结束,以及电子设备B的读操作结束。
也即当电子设备A读写结束,已经电子设备B也读完时,电子设备C可以将临时修改文件中的内容写回文件f中。
4.临时修改文件已写满。
如前文所述,临时修改文件中能够存储的容量有限,所以会存在临时修改文件被写满的情况,当临时修改文件被写满时,可以将临时修改文件中的内容写回文件f。
进一步地,当临时修改文件被写满且被写满的临时修改文件的数量达到数量阈值时,确定临时文件内容写回条件被触发,此时也可以将临时修改文件中的内容写回文件f。其中数量阈值可以根据实际需求进行设置,譬如数量阈值是2。
由于在将临时修改文件中的内容写回时,可能仍存在电子设备继续访问临时修改文件中的内容。为了保证继续访问的电子设备所访问的内容有效,只允许写回已完成修改的内容。因此,电子设备C根据电子设备A和电子设备B的访问状态,重新确定第一标志位,具体的,根据当前仍在访问的文件句柄,重新确定第一标志位。
譬如,假设电子设备A仍在继续读写文件f,电子设备B读操作结束,若在电子设备A的读写过程中获取的标志位是TAG2,在电子设备B的读过程中获取的标志位是TAG2,则重新确定的第一标志位是TAG2。再如,假设电子设备A读写操作结束,并在临时修改文件中设置的标志位是TAG3,电子设备B的读操作也结束,则重新确定的第一标志位是TAG3。
在写回过程中,如果有新的电子设备再次打开该文件f时也是可以打开成功的,因为在整个写回过程中,临时文件是一直存在的,只需设置一个变量,表示当前写回成功的片数即可。
102:将临时修改文件中位于重新确定的最新标志位指示的内容截止位置之前的内容以片为单位写回文件f中。
103:当将位于重新确定的最新标志位指示的内容截止位置之前的内容写回成功后,若临时修改文件中不包括未被写回的内容,则删除临时修改文件、以及临时修改文件对应的哈希表和映射关系表。
也即是,如果将临时修改文件中是内容均同步至文件f中,则可以删除临时修改文件。否则,若未写完成,结束本次的写回操作,等待下一次写回时机。
作为本申请的一个示例,在临时修改文件中存在标志位的情况下,电子设备C可以维护一个标志位列表,标志位列表中包括临时修改文件中的所有标志位,且按照标志位建立时间从晚到早的顺序排列。如此,当将位于重新确定的最新标志位指示的内容截止位置之前的内容写回成功后,更新标志位列表,使得更新后的标志位列表能够指示哪些内容已被写回原始的文件f中。如此,在下一次写回时,对已被写回的内容无需再次进行同步,从而可以避免对相同的内容重复写回。
在本申请实施例中,当满足临时文件内容写回条件时,获取当前仍在访问的电子设备对应的第一标志位,写回第一标志位指示的内容截止位置之前的内容,以保证该电子设备的访问仍有效。在写回过程中仍保留临时修改文件,直到临时修改文件中的所有内容均已写回至文件f,如此可以保证不影响其他电子设备继续访问文件f。
请参考图11,图11是根据一示例性实施例示出的一种访问文件的方法流程示意图,作为示例而非限定,该方法应用于第一电子设备中,第一电子设备可以为上述各个示例中的电子设备C。该方法可以包括如下内容:
1101:基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容。
在一个实施例中,第二电子设备是上述各个实施例中的电子设备A。
该文件可以是上述各个实施例中的文件f。
步骤1101的具体实现可以参见上述图4所示实施例。
1102:接收第三电子设备对文件的访问请求,访问请求携带访问模式的指示信息和第一文件片信息。
在一个实施例中,第三电子设备是上述各个示例中的电子设备B。
第一文件片信息用于唯一地指示文件中的第一文件片。第一文件片信息的数量可能是一个,也可能是多个。当访问请求中携带多个第一文件片信息时,说明第三设备请求读取文件中的多个第一文件片,对于多个第一文件片中的每个第一文件片,均可以按照本申请实施例提供的方法依次进行读取。
1103:在指示信息指示的是只读模式的情况下,若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,则从临时修改文件中读取第一文件片。
在一个实施例中,当文件的大小大于或等于文件阈值时,执行步骤1103。否则,当文件的大小小于文件阈值时,可以直接从文件中读取第一文件片,具体可以参见上述实施例。
在一个实施例中,第一文件片已完成修改的确定方式包括:获取第一标志位,第一标志位用于标识临时修改文件中最近已完成修改的内容截止位置。若第一文件片位于内容截止位置之前,则确定第一文件片已完成修改。
在一个实施例中,确定临时修改文件是否包括第一文件片信息指示的第一文件片的具体实现可以包括:基于第一文件片信息进行哈希计算,得到第一哈希值。从临时修改文件对应的哈希表中查询第一哈希值对应的临时位置信息,得到至少一个临时位置信息,哈希表用于记录哈希值与临时位置信息之间的对应关系,临时位置信息用于指示在临时修改文件中的位置。根据第一文件片信息、至少一个临时位置信息、临时修改文件对应的映射关系表,确定临时修改文件中是否包括第一文件片,映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
在一个实施例中,根据第一文件片信息、至少一个临时位置信息、临时修改文件对应的映射关系表,确定临时修改文件中是否包括第一文件片的具体实现可以包括:从临时修改文件对应的映射关系表中,依次确定与至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息。每确定一个文件片信息,将所确定的文件片信息与第一文件片信息进行比较。若所确定的文件片信息中存在与第一文件片信息相同的文件片信息,则确定临时修改文件中包括第一文件片。
在一个实施例中,临时修改文件的数量为多个,多个临时修改文件中的每个临时修改文件均对应有哈希表和映射关系表。该种情况下,每确定一个文件片信息,将所确定的文件片信息与第一文件片信息进行比较之后,还包括:若与各个临时位置信息存在映射关系的文件片信息中,不存在与第一文件片信息相同的文件片信息,则基于第一哈希值,依次遍历多个临时修改文件中其他各个临时修改文件对应的哈希表和映射关系表。在遍历过程中,查询是否存在与第一文件片信息相同的文件片信息。若遍历结束后仍未查询到与第一文件片信息相同的文件片信息,则确定临时修改文件中不包括第一文件片。
在一个实施例中,在临时修改文件中包括第一文件片的情况下,若第一文件片未完成修改,则根据第一文件片信息,从文件中读取第一文件片。
1104:将读取的第一文件片发送给第三电子设备。
在一个实施例中,当临时文件内容写回条件被触发时,重新确定第一标志位。将临时修改文件中位于重新确定的第一标志位指示的内容截止位置之前的内容以片为单位写回文件中。
在一个实施例中,临时文件内容写回条件被触发满足如下条件中的任一项:第二电子设备的读写操作结束;或者,第三电子设备的读操作结束;或者,第二电子设备的读写操作结束,以及第三电子设备的读操作结束;或者,临时修改文件已写满。
在一个实施例中,当将位于重新确定的第一标志位指示的内容截止位置之前的内容写回成功后,若临时修改文件中不包括未被写回的内容,且不存在电子设备正在访问临时修改文件中的内容,则删除临时修改文件、以及临时修改文件对应的哈希表和映射关系表。
在一个实施例中,当第二电子设备的读写操作结束时,获取第二哈希值,以及在临时修改文件中确定第二电子设备读写的第二文件片的临时文件位置,第二哈希值是根据第二文件片的第二文件片信息确定的。在哈希表中增加第二哈希值、第二文件片的临时文件位置之间的对应关系,以及在映射关系表中增加第二文件片的临时文件位置、第二文件片信息之间的映射关系。
在本申请实施例中,基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容。由于对文件的修改是基于临时修改文件执行的,所以,当接收第三电子设备对文件的访问请求时,如果访问不冲突,则允许第三电子设备访问。并且,如果临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,说明临时修改文件中的第一文件片是可读的,所以可以从临时修改文件中读取第一文件片,并将读取的第一文件片发送给第三电子设备,从而实现多个电子设备在相同时间对文件的访问。
基于上述提供的访问文件的方法,请参考图12,图12是本申请实施例提供的一种访问文件的装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部,该电子设备可以为图11所示实施例中的第一电子设备。
第一接收模块1210,用于基于临时修改文件接收第二电子设备对文件的读写操作,临时修改文件包括文件中待修改和/或已修改的内容;
第二接收模块1220,用于接收第三电子设备对文件的访问请求,访问请求携带访问模式的指示信息和第一文件片信息;
读取模块1230,用于在指示信息指示的是只读模式的情况下,若临时修改文件包括第一文件片信息指示的第一文件片,且第一文件片已完成修改,则从临时修改文件中读取第一文件片;
发送模块1240,用于将读取的第一文件片发送给第三电子设备。
作为本申请的一个示例,所述读取模块1230还用于:
获取第一标志位,所述第一标志位用于标识所述临时修改文件中最近已完成修改的内容截止位置;
若所述第一文件片位于所述内容截止位置之前,则确定所述第一文件片已完成修改。
作为本申请的一个示例,所述读取模块1230还用于:
基于所述第一文件片信息进行哈希计算,得到第一哈希值;
从所述临时修改文件对应的哈希表中查询所述第一哈希值对应的临时位置信息,得到至少一个临时位置信息,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置;
根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
作为本申请的一个示例,所述读取模块1230还用于:
从所述临时修改文件对应的映射关系表中,依次确定与所述至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息;
每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较;
若所确定的文件片信息中存在与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中包括所述第一文件片。
作为本申请的一个示例,所述临时修改文件的数量为多个,多个临时修改文件中的每个临时修改文件均对应有哈希表和映射关系表;所述读取模块1230还用于:
若与所述各个临时位置信息存在映射关系的文件片信息中,不存在与所述第一文件片信息相同的文件片信息,则基于所述第一哈希值,依次遍历所述多个临时修改文件中其他各个临时修改文件对应的哈希表和映射关系表;
在遍历过程中,查询是否存在与所述第一文件片信息相同的文件片信息;
若遍历结束后仍未查询到与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中不包括所述第一文件片。
作为本申请的一个示例,所述读取模块1230还用于:
当临时文件内容写回条件被触发时,重新确定所述第一标志位;
将所述临时修改文件中位于重新确定的所述第一标志位指示的内容截止位置之前的内容以片为单位写回所述文件中。
作为本申请的一个示例,所述读取模块1230还用于:
当将位于所述重新确定的所述第一标志位指示的内容截止位置之前的内容写回成功后,若所述临时修改文件中不包括未被写回的内容,且不存在电子设备正在访问所述临时修改文件中的内容,则删除所述临时修改文件、以及所述临时修改文件对应的哈希表和映射关系表;
其中,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
作为本申请的一个示例,所述临时文件内容写回条件被触发满足如下条件中的任一项:
所述第二电子设备的读写操作结束;或者,
所述第三电子设备的读操作结束;或者,
所述第二电子设备的读写操作结束,以及所述第三电子设备的读操作结束;或者,
所述临时修改文件已写满。
作为本申请的一个示例,所述第一获取模块1210还用于:
当所述第二电子设备的读写操作结束时,获取第二哈希值,以及在所述临时修改文件中确定所述第二电子设备读写的第二文件片的临时文件位置,所述第二哈希值是根据所述第二文件片的第二文件片信息确定的;
在所述哈希表中增加所述第二哈希值、所述第二文件片的临时文件位置之间的对应关系,以及在所述映射关系表中增加所述第二文件片的临时文件位置、所述第二文件片信息之间的映射关系。
作为本申请的一个示例,所述读取模块1230还用于:
在所述临时修改文件中包括所述第一文件片的情况下,若所述第一文件片未完成修改,则根据所述第一文件片信息,从所述文件中读取所述第一文件片。
在本申请实施例中,在第二电子设备读写文件时基于临时修改文件进行访问,无需增加读写锁机制。在第三电子设备请求读文件时,若临时修改文件包括待读取的第一文件片且第一文件片已完成修改,则从临时修改文件中读取第一文件片,从而实现了多个电子设备在相同时间对文件的访问。
需要说明的是:上述实施例提供的访问文件的装置在访问文件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
上述实施例提供的访问文件的装置与访问文件的方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,比如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(比如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(比如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(比如:软盘、硬盘、磁带)、光介质(比如:数字通用光盘(Digital Versatile Disc,DVD))或半导体介质(比如:固态硬盘(Solid State Disk,SSD))等。
以上所述为本申请提供的可选实施例,并不用以限制本申请,凡在本申请的揭露的技术范围之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种访问文件的方法,其特征在于,应用于第一电子设备中,所述方法包括:
基于临时修改文件接收第二电子设备对文件的读写操作,所述临时修改文件包括所述文件中待修改和/或已修改的内容;
接收第三电子设备对所述文件的访问请求,所述访问请求携带访问模式的指示信息和第一文件片信息;
在所述指示信息指示的是只读模式的情况下,若所述临时修改文件包括所述第一文件片信息指示的第一文件片,且所述第一文件片已完成修改,则从所述临时修改文件中读取所述第一文件片;
将读取的所述第一文件片发送给所述第三电子设备。
2.根据权利要求1所述的方法,其特征在于,所述第一文件片已完成修改的确定方式包括:
获取第一标志位,所述第一标志位用于标识所述临时修改文件中最近已完成修改的内容截止位置;
若所述第一文件片位于所述内容截止位置之前,则确定所述第一文件片已完成修改。
3.根据权利要求1或2所述的方法,其特征在于,确定所述临时修改文件是否包括所述第一文件片信息指示的第一文件片,包括:
基于所述第一文件片信息进行哈希计算,得到第一哈希值;
从所述临时修改文件对应的哈希表中查询所述第一哈希值对应的临时位置信息,得到至少一个临时位置信息,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置;
根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一文件片信息、所述至少一个临时位置信息、所述临时修改文件对应的映射关系表,确定所述临时修改文件中是否包括所述第一文件片,包括:
从所述临时修改文件对应的映射关系表中,依次确定与所述至少一个临时位置信息中各个临时位置信息存在映射关系的文件片信息;
每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较;
若所确定的文件片信息中存在与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中包括所述第一文件片。
5.根据权利要求4所述的方法,其特征在于,所述临时修改文件的数量为多个,多个临时修改文件中的每个临时修改文件均对应有哈希表和映射关系表;
所述每确定一个文件片信息,将所确定的文件片信息与所述第一文件片信息进行比较之后,还包括:
若与所述各个临时位置信息存在映射关系的文件片信息中,不存在与所述第一文件片信息相同的文件片信息,则基于所述第一哈希值,依次遍历所述多个临时修改文件中其他各个临时修改文件对应的哈希表和映射关系表;
在遍历过程中,查询是否存在与所述第一文件片信息相同的文件片信息;
若遍历结束后仍未查询到与所述第一文件片信息相同的文件片信息,则确定所述临时修改文件中不包括所述第一文件片。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当临时文件内容写回条件被触发时,重新确定所述第一标志位;
将所述临时修改文件中位于重新确定的所述第一标志位指示的内容截止位置之前的内容以片为单位写回所述文件中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当将位于所述重新确定的所述第一标志位指示的内容截止位置之前的内容写回成功后,若所述临时修改文件中不包括未被写回的内容,且不存在电子设备正在访问所述临时修改文件中的内容,则删除所述临时修改文件、以及所述临时修改文件对应的哈希表和映射关系表;
其中,所述哈希表用于记录哈希值与临时位置信息之间的对应关系,所述临时位置信息用于指示在所述临时修改文件中的位置,所述映射关系表用于记录临时位置信息与文件片信息之间的映射关系。
8.根据权利要求6所述的方法,其特征在于,所述临时文件内容写回条件被触发满足如下条件中的任一项:
所述第二电子设备的读写操作结束;或者,
所述第三电子设备的读操作结束;或者,
所述第二电子设备的读写操作结束,以及所述第三电子设备的读操作结束;或者,
所述临时修改文件已写满。
9.根据权利要求3所述的方法,其特征在于,所述基于临时修改文件接收第二电子设备对文件的读写操作之后,还包括:
当所述第二电子设备的读写操作结束时,获取第二哈希值,以及在所述临时修改文件中确定所述第二电子设备读写的第二文件片的临时文件位置,所述第二哈希值是根据所述第二文件片的第二文件片信息确定的;
在所述哈希表中增加所述第二哈希值、所述第二文件片的临时文件位置之间的对应关系,以及在所述映射关系表中增加所述第二文件片的临时文件位置、所述第二文件片信息之间的映射关系。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述临时修改文件中包括所述第一文件片的情况下,若所述第一文件片未完成修改,则根据所述第一文件片信息,从所述文件中读取所述第一文件片。
11.一种电子设备,所述电子设备的结构中包括处理器和存储器,其特征在于,所述存储器用于存储支持所述电子设备执行如权利要求1-10任一项所述的方法的程序,以及存储用于实现如权利要求1-10任一项所述的方法所涉及的数据;所述处理器被配置为用于执行所述存储器中存储的程序。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-10任一项所述的方法。
CN202111492985.0A 2021-12-08 2021-12-08 访问文件的方法、电子设备及可读存储介质 Active CN113934691B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111492985.0A CN113934691B (zh) 2021-12-08 2021-12-08 访问文件的方法、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111492985.0A CN113934691B (zh) 2021-12-08 2021-12-08 访问文件的方法、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN113934691A true CN113934691A (zh) 2022-01-14
CN113934691B CN113934691B (zh) 2022-05-17

Family

ID=79288899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111492985.0A Active CN113934691B (zh) 2021-12-08 2021-12-08 访问文件的方法、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN113934691B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737281A (zh) * 2023-01-12 2023-09-12 银河航天(北京)通信技术有限公司 文件上注的方法、装置及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007128005A2 (en) * 2006-05-03 2007-11-08 Data Robotics Incorporated Filesystem-aware block storage system, apparatus, and method
US7577763B1 (en) * 2005-02-28 2009-08-18 Apple Inc. Managing read requests from multiple requestors
US7870239B1 (en) * 1998-06-30 2011-01-11 Emc Corporation Method and system for securing network access to dynamically updateable data stored in a data storage system
WO2016202114A1 (zh) * 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 一种数据传输方法、装置及存储介质
CN107967265A (zh) * 2016-10-18 2018-04-27 华为技术有限公司 文件的访问方法、数据服务器和文件访问系统
CN108763401A (zh) * 2018-05-22 2018-11-06 平安科技(深圳)有限公司 一种文件的读写方法及设备
CN110032543A (zh) * 2019-04-15 2019-07-19 苏州浪潮智能科技有限公司 一种存储文件系统的管理方法
US20200012637A1 (en) * 2017-03-29 2020-01-09 Amazon Technologies, Inc. Consistent snapshot points in a distributed storage service
CN110673800A (zh) * 2019-09-29 2020-01-10 苏州浪潮智能科技有限公司 文件系统的数据操作方法、装置、设备及可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870239B1 (en) * 1998-06-30 2011-01-11 Emc Corporation Method and system for securing network access to dynamically updateable data stored in a data storage system
US7577763B1 (en) * 2005-02-28 2009-08-18 Apple Inc. Managing read requests from multiple requestors
WO2007128005A2 (en) * 2006-05-03 2007-11-08 Data Robotics Incorporated Filesystem-aware block storage system, apparatus, and method
WO2016202114A1 (zh) * 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 一种数据传输方法、装置及存储介质
CN107967265A (zh) * 2016-10-18 2018-04-27 华为技术有限公司 文件的访问方法、数据服务器和文件访问系统
US20200012637A1 (en) * 2017-03-29 2020-01-09 Amazon Technologies, Inc. Consistent snapshot points in a distributed storage service
CN108763401A (zh) * 2018-05-22 2018-11-06 平安科技(深圳)有限公司 一种文件的读写方法及设备
CN110032543A (zh) * 2019-04-15 2019-07-19 苏州浪潮智能科技有限公司 一种存储文件系统的管理方法
CN110673800A (zh) * 2019-09-29 2020-01-10 苏州浪潮智能科技有限公司 文件系统的数据操作方法、装置、设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737281A (zh) * 2023-01-12 2023-09-12 银河航天(北京)通信技术有限公司 文件上注的方法、装置及存储介质
CN116737281B (zh) * 2023-01-12 2024-01-09 银河航天(北京)通信技术有限公司 文件上注的方法、装置及存储介质

Also Published As

Publication number Publication date
CN113934691B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
CN113434288B (zh) 内存管理的方法及电子设备
CN110569130B (zh) 一种跨进程通信方法、装置及设备
US20190286369A1 (en) TECHNIQUES FOR REDUCING WRITE AMPLIFICATION ON SOLID STATE STORAGE DEVICES (SSDs)
CN113934691B (zh) 访问文件的方法、电子设备及可读存储介质
WO2021018052A1 (zh) 一种垃圾回收方法及装置
CN114116246A (zh) 一种功能调用方法和装置
CN113495744A (zh) 一种版本升级方法及相关装置
CN113435173B (zh) 文本生成方法、相关装置及系统
WO2024198572A1 (zh) 内存访问方法、计算节点及相关单元与存储介质
CN115481444B (zh) 文件保护方法及电子设备
CN115981573B (zh) 数据管理方法、电子设备及计算机可读写存储介质
CN116662270B (zh) 文件解析方法及相关装置
US12118245B2 (en) File system improvements for zoned storage device operations
US20230350738A1 (en) Method for Reusing Shared Library and Electronic Device
CN118120212A (zh) 一种文件去重方法、装置和设备
US7747627B1 (en) Method and system for file retrieval using image virtual file system
WO2021203591A1 (zh) 异构云存储系统的数据处理方法及其可读介质和系统
US20100250507A1 (en) Enumeration of a concurrent data structure
US10599617B2 (en) Methods and apparatus to modify a binary file for scalable dependency loading on distributed computing systems
WO2024046184A1 (zh) 一种文件管理、应用管理的方法和电子设备
CN117708072B (zh) 文件复制方法、终端设备及芯片系统
CN116701299B (zh) 一种目录管理方法及相关装置
WO2023061014A1 (zh) 任务管理方法及装置
CN117389638B (zh) 一种电子设备开机方法及电子设备
CN115982060B (zh) 一种内存回收方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant