一种获取java卡内可用存储空间的方法、计算机装置以及计算机可读存储介质制造方法及图纸

技术编号:21089436 阅读:18 留言:0更新日期:2019-05-11 09:55
本发明专利技术提供一种获取java卡内可用存储空间的方法、计算机装置、计算机可读存储介质,该方法包括接收选择实例指令并执行,判断最后一次分配存储空间标志位是否置位,若是,则设置第一变量和第二变量,对分配存储空间标志位进行置位,申请一个缓冲器,并给缓冲器的可分配的存储空间的大小设置第二预设阈值,并执行预设的循环指令,给缓冲器分配预设大小的存储空间,缓冲器的储存空间大小为所述第二变量的值,判断分配的过程是否成功,若分配的过程失败,则减少一次第二变量的值,返回执行所述循环指令。本发明专利技术还提供上述方法的计算机装置及计算机可读存储介质。本发明专利技术能够更加准确的获取java卡内可用存储空间的大小。

【技术实现步骤摘要】
一种获取java卡内可用存储空间的方法、计算机装置以及计算机可读存储介质
本专利技术涉及智能卡领域,具体是涉及一种获取java卡内可用存储空间的方法,计算机装置以及计算机可读存储介质。
技术介绍
智能卡例如门禁卡、银行卡、公交卡等被广泛的应用在人们日常生活中,其中java卡是一种可以运行java程序的CPU智能卡,它的出现使得智能卡应用的研发变得简单。在java卡领域中,java卡的全球通用规范是GlobalPlatform规范,但是GlobalPlatform规范并未给出明确获取java卡剩余存储空间的指令,因此用户在使用时不能明确掌握剩余的空间,给个人化发卡、调试卡的过程带来了困扰,常常会出现因卡片存储空间不足导致不可预知的错误出现,使得用户寻找错误原因,加大了用户的工作量,并降低了用户进行智能卡相关作业时的工作效率。虽然,在GlobalPlatform规范中,java卡在面向用户的API接口中有一个函数接口publicstaticshortgetAvailableMemory,用户可以通过这个函数接口发送相关指令给Java卡,然后获取java卡发送出来的数据即为java卡内剩余存储空间大小,但是用户通过这个函数接口获取到数据的类型是short型,所以最大仅能获取java卡内的剩余存储空间大小为32K,故存在一定的局限性。
技术实现思路
将本专利技术的第一目的是提供一种更加准确获取java卡内可用存储空间的方法。本专利技术的第二目的是提供一种能够实现上述一种获取java卡内可用存储空间的方法的计算机装置。本专利技术的第三目的是提供一种能够实现上述一种获取java卡内可用存储空间的方法的计算机可读存储介质。为了实现上述的第一目的,本专利技术提供的一种获取java卡内可用存储空间的方法包括,接收选择实例指令并执行,判断最后一次分配存储空间标志位是否置位,若是,则设置第一变量和第二变量,调用API接口获取内部剩余存储空间的值并赋予给第一变量;判断第一变量的值是否小于预设第一阈值,若是,则将第一变量的值赋予给第二变量;对分配存储空间标志位进行置位,申请一个缓冲器,并给缓冲器的可分配的存储空间的大小设置第二预设阈值,并执行预设的循环指令,给缓冲器分配预设大小的存储空间,缓冲器的储存空间大小为第二变量的值,判断分配的过程是否成功,若分配的过程失败,则减少一次第二变量的值,并对分配存储空间标志位以及最后一次分配存储空间标志位进行置位后,返回执行循环指令;若分配的过程成功,则结束执行选择实例指令,且执行选择实例指令后得到的第二变量的值即为给缓冲器分配的存储空间大小的值。由上述方案可见,java卡可以接收一条选择实例指令并执行后,通过判断最后一次分配存储空间标志位是否置位来判断出卡内是否还有剩余空间,如卡内还有剩余空间则设置第一变量和第二变量,再通过API接口获取内部剩余存储空间的值并赋予给第一变量,判断第一变量的值小于预设第一阈值则将第一变量的值赋予给第二变量,然后申请一个缓冲器,通过给缓冲器分配预设大小的存储空间,并且这个预设的大小的存储空间的值是第二变量的值,若分配过程中用捕捉异常的方式捕捉分配存储空间时是否因可存储空间不足导致分配失败,即第二变量的值大于第二预设阈值,则表示分配失败,若第二变量的值小于或等于第二预设阈值则表示分配成功,最后可得到的第二变量的值即为预设大小的存储空间的值。进一步的方案是,接收用户终端发送的选择实例指令后,向用户终端发送执行选择实例指令后得到的第二变量的值,直至用户终端检测接收到所述第二变量的值为0,则用户终端结束发送选择实例指令,用户终端再将每一次发送选择实例指令后接收到的一个第二变量的值进行累加。可见,用户终端给java卡发送一次选择实例指令,则可接收一次第二变量的值,直至用户终端检测到接收的第二变量的值为0,则结束发送给java卡的选择实例指令,并将每一次发送选择实例指令接收到的一个第二变量的值进行累加,即可更加准确的获取java卡可用存储空间的方法。进一步的方案是,向用户终端发送第二变量的值包括:将第二变量的值转换为APDU指令序列后,向用户终端发送APDU指令序列。可见,用户终端与java卡之间传送的信息单元是APDU指令序列,java卡将第二变量的值转换为APDU指令序列的后,才能发送给用户终端。进一步的方案是,向用户终端发送第二变量的值前,用户终端检测接收所述第二变量的值为0后,包括:用户终端接收所述APDU指令序列,并将APDU指令序列中的所述第二变量的值提取出来。可见,用户终端需要将接收到的APDU指令序列中的第二变量的值提取出来,才可以读取第二变量的值。进一步的方案是,接收选择实例指令并运行前,包括:接收执行文件并将执行文件下载至应用模块,执行文件用于执行接收到的选择实例指令。可见,java卡接收选择实例指令前,需要在java卡的应用模块APPLET上下执行文件CAP包,使得java卡能够接收用户终端发送的选择实例指令。进一步的方案是,若判断第一变量的值大于预设第一阈值,则将预设第一阈值赋予给所述第一变量,并对分配存储空间标志位进行置位,申请一个缓冲器,并给缓冲器的可分配的存储空间的大小设置第二预设阈值,并执行预设的循环指令。可见,由于缓冲器的可分配的存储空间大小一定,为避免第二变量的值过大,导致执行循环指令给缓冲器分配存储空间的过程计算量过大,给第二变量的值设置一个一次性分配存储空间的大小即第一预设阈值,来加快执行循环指令给缓冲器分配存储空间的过程。进一步的方案是,结束执行选择实例指令后包括:删除下载至应用模块的所述执行文件。可见,结束执行选择实例指令后,将下载至应用模块APPLET的执行文件CAP删除,避免占用java卡内可用存储空间。更进一步的方案是,减少一次第二变量的值包括:以一个字节为单位减少第二变量的值。可见,为了更加准确的获取执行选择实例指令后得到的第二变量的值,以一个字节为单位减少第二变量的值,进一步减少了误差。为了实现上述的第二目的,本专利技术还提供的计算机装置包括处理器以及存储器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述的获取java卡内可用存储空间的方法的各个步骤。为了实现上述的第三目的,本专利技术还提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述获取java卡内可用存储空间的方法的各个步骤。附图说明图1是本专利技术一种获取java卡可用存储空间的方法的实施例的第一流程图。图2是本专利技术一种获取java卡可用存储空间的方法的实施例的第二流程图。以下结合附图及实例对本专利技术作进一步说明。具体实例方式本专利技术提供的一种获取java卡内可用存储空间的方法应用在能够向java卡发送指令的终端设备上,典型的应用在写卡器等终端设备上。本专利技术的计算机装置可以是上述的电子设备,计算机可读存储介质可视是具有数据存储功能的各种存储介质,如FLAASH、EEPROM等非易失性存储器。获取java卡内可读存储空间的方法实施例:参见图1,对java卡与用户终端之间的交互进行介绍。本方法首先执行步骤S1,java卡接收执行文件,并将执行文件下载至java卡内的应用模块。例如,接收执行文件CAP包,并将执行文件CAP包下载至应用模块APPLET,使得本文档来自技高网...

【技术保护点】
1.一种获取java卡内可用存储空间的方法,其特征在于,包括:接收选择实例指令并执行,判断最后一次分配存储空间标志位是否置位,若是,则设置第一变量和第二变量,调用API接口获取内部剩余存储空间的值并赋予给所述第一变量;判断所述第一变量的值是否小于预设第一阈值,若是,则将所述第一变量的值赋予给所述第二变量;对分配存储空间标志位进行置位,申请一个缓冲器,并给所述缓冲器的可分配的存储空间的大小设置第二预设阈值,并执行预设的循环指令,给所述缓冲器分配预设大小的存储空间,所述缓冲器的储存空间大小为所述第二变量的值,判断所述分配的过程是否成功,若所述分配的过程失败,则减少一次所述第二变量的值,并对所述分配存储空间标志位以及所述最后一次分配存储空间标志位进行置位后,返回执行所述循环指令;若所述分配的过程成功,则结束执行所述选择实例指令,且执行所述选择实例指令后得到的第二变量的值即为给所述缓冲器分配的存储空间大小的值。

【技术特征摘要】
1.一种获取java卡内可用存储空间的方法,其特征在于,包括:接收选择实例指令并执行,判断最后一次分配存储空间标志位是否置位,若是,则设置第一变量和第二变量,调用API接口获取内部剩余存储空间的值并赋予给所述第一变量;判断所述第一变量的值是否小于预设第一阈值,若是,则将所述第一变量的值赋予给所述第二变量;对分配存储空间标志位进行置位,申请一个缓冲器,并给所述缓冲器的可分配的存储空间的大小设置第二预设阈值,并执行预设的循环指令,给所述缓冲器分配预设大小的存储空间,所述缓冲器的储存空间大小为所述第二变量的值,判断所述分配的过程是否成功,若所述分配的过程失败,则减少一次所述第二变量的值,并对所述分配存储空间标志位以及所述最后一次分配存储空间标志位进行置位后,返回执行所述循环指令;若所述分配的过程成功,则结束执行所述选择实例指令,且执行所述选择实例指令后得到的第二变量的值即为给所述缓冲器分配的存储空间大小的值。2.根据权利要求1所述的一种获取java卡内可用存储空间的方法,其特征在于,包括:接收用户终端发送的选择实例指令后,向所述用户终端发送执行所述选择实例指令后得到的第二变量的值,直至所述用户终端检测接收到所述第二变量的值为0,则所述用户终端结束发送所述选择实例指令,所述用户终端再将每一次发送所述选择实例指令后接收到的一个所述第二变量的值进行累加。3.根据权利要求2所述的一种获取java卡内可用存储空间的方法,其特征在于,包括:所述用户终端结束发送选择实例指令包括:用户终端向java卡发送结束指令,所述java卡接收到所述结束指令后删除下载至应用模块的所述执行文件。4.根据权利要求3所述的一种获取java卡内可用存储空间的...

【专利技术属性】
技术研发人员:谢华祥段晓燕王定燕
申请(专利权)人:金邦达有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1