0
我在創建目錄文件時遇到問題。我顯然不是在創建一個新的對象,而只是參考 - 只是還不確定在哪裏/爲什麼!JavaCard - 未保存AID?數組被最後一個元素覆蓋
DirectoryFile[] arrayDF = new DirectoryFile[8];
現在
當我創建一個新的DF:
numapp++;
arrayDF[numApp] = new DirectoryFile(aid);
,並在之後我只需打印出來的循環
APDU apdu = APDU.getCurrentAPDU();
apdu.setOutgoing();
apdu.setOutgoingLength((short) 21);
for (i = 2; i <= numApp; i++) {
apdu.sendBytesLong(arrayDF[i].getAID(), (short) 0, (short) 6);
}
其中numApp是應用/ DFS數,從2開始,因爲1是MasterFile。 援助= a00000000001我得到
A0 00 00 00 00 01 90 00 .........
Status: No Error
爲響應 援助= a00000000002我得到
A0 00 00 00 00 02 A0 00 00 00 00 02 90 00 ................
Status: No Error
援助= a00000000003我得到
A0 00 00 00 00 03 A0 00 00 00 00 03 A0 00 00 00 00 03 90 00 ................
Status: No Error
因此,所有已保存的艾滋病得到以某種方式被覆蓋。 在DirectoryFile我做如下
public DirectoryFile(byte[] aid) {
super(aid);
for (byte i = 0; i < activatedFiles.length; i++)
activatedFiles[i] = false;
}
其中超(援助)要求File.java
public abstract class File {
public byte[] aid = new byte[6];
public File (byte[] aid) {
this.aid = aid;
}
public byte[] getAID() {
return aid;
}
}
哪裏是我在做這個錯誤的構造函數?
更多的測試後,我至少發現了類(DirectoryFile,文件)應該工作得很好:
aDF[j] = new DirectoryFile(aid1);
j++;
aDF[j] = new DirectoryFile(aid2);
j++;
aDF[j] = new DirectoryFile(aid3);
j++;
aDF[j] = new DirectoryFile(aid4);
j++;
APDU apdu = APDU.getCurrentAPDU();
apdu.setOutgoing();
byte[] myi = new byte[1];
apdu.setOutgoingLength((short) 28);
for (j = 0; i < 4; i++) {
myi[0] = i;
apdu.sendBytesLong(myi, (short) 0, (short) 1);
apdu.sendBytesLong(aDF[i].getAID(), (short) 0, (short) 6);
將打印
00 A0 00 00 00 00 01 01 A0 00 00 00 00 02 02 A0 ................
00 00 00 00 03 03 A0 00 00 00 00 04 90 00 ..............
Status: No Error
謝謝你的回答!我嘗試了'Util.arrayCopy(aid,(short)0,this.aid,(short)0,(short)6);'而不是'this.aid = aid;'但是結果不會改變(不幸)! – achiever