📄 parametersfile.java
字号:
/* * Copyright ? 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */// /*// Workfile:@(#)ParametersFile.java 1.4// Version:1.4// Date:03/26/01// // Archive: /Products/Europa/samples/com/sun/javacard/samples/JavaPurse/ParametersFile.java // Modified:03/26/01 17:08:44// Original author: Zhiqun// */package com.sun.javacard.samples.JavaPurseCrypto;import javacard.framework.*;/** * This is the class for all linear variable-length record files, and the base class * for linear variable-fixed and cyclic record files.<p> * */class ParametersFile { // Variables Record records[]; byte numRecords; /** * Constructor. * @param maxNumRecords the maximum number of records in this file */ public ParametersFile(byte maxNumRecords) { records = new Record[maxNumRecords]; numRecords = 0; } /** * Get the actual number of records in this file. * @return numRecords */ public byte getNumRecords() { return numRecords; } /** * Add (append) a new record to the file. Note that * the record reference is stored in the file object. A copy of the * record byte array is not made. * @param record the record byte array * @exception ISOException if the file is full. * <ul> * <li>ISOException.reason = ISO7816.SW_FILE_FULL * </ul> */ public void addRecord(byte record[]) throws ISOException{ if ( records.length == numRecords) ISOException.throwIt(ISO7816.SW_FILE_FULL); records[numRecords++] = new Record(record); } /** * Get the record byte array for the specified record number. This is a * reference to the actual file data, not a copy of the file data. * Records are in the order that they were added to the file. * Record number is in the range from 1 to the number of records in the file * @param recordNum the index (first record = 1) of the record. * @return record or null if the record is not found */ public byte[] getRecord(byte recordNum) { // current record only has meaning in the context of file system // file system will translate 0 to the currentRecord number in // its methods // but you can not pass in 0 to getRecord directly if ( (recordNum <= 0) || ( recordNum > numRecords) ) return null; return records[recordNum-1].record; } /** * Find the record. * @param firstByte if non-0, the record's first byte must match this value; if 0, any value of the record's first byte matches. * @return the record number, or 0 if the record is not found */ public byte findRecord(byte firstByte) { // empty file if (numRecords == 0) return 0; byte eRecNum = numRecords; // existing record number byte currentRecNumber = 1; byte thisRec[]; while (true) { thisRec = getRecord(currentRecNumber); if ( firstByte == 0) { return currentRecNumber; } if ( thisRec[0] == firstByte) { return currentRecNumber; } if ( currentRecNumber == eRecNum ) return 0; currentRecNumber++; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -