디렉토리 파일을 만들 때 문제가 발생합니다. 나는 분명히 새로운 Object를 생성하지는 않고 단지 참조 만 - 확실히 왜/확실하지는 않습니다! 지금JavaCard - AID가 저장되지 않았습니까? 배열을 마지막 요소로 덮어 씁니다.
DirectoryFile[] arrayDF = new DirectoryFile[8];
나는 새로운 DF 만들 때 :
numapp++;
arrayDF[numApp] = new DirectoryFile(aid);
과 오른쪽 그 후 나는 단순히 루프를 인쇄 numApp이/DFS 응용 프로그램의 수는
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);
}
1이 MasterFile이므로 2부터 시작합니다. 원조 는 = a00000000001 나는 그래서 모든 이미 저장 에이즈 얻을
A0 00 00 00 00 03 A0 00 00 00 00 03 A0 00 00 00 00 03 90 00 ................
Status: No Error
을 얻을
A0 00 00 00 00 01 90 00 .........
Status: No Error
원조 = a00000000002에 대한 응답 나는 원조 = a00000000003에 대한
A0 00 00 00 00 02 A0 00 00 00 00 02 90 00 ................
Status: No Error
를 얻을 수 여하튼 덮어 쓴다. 슈퍼 (원조)이 일에 내 실수가
public abstract class File {
public byte[] aid = new byte[6];
public File (byte[] aid) {
this.aid = aid;
}
public byte[] getAID() {
return aid;
}
}
File.java
의 생성자를 호출public DirectoryFile(byte[] aid) {
super(aid);
for (byte i = 0; i < activatedFiles.length; i++)
activatedFiles[i] = false;
}
을 다음과 같이 DirectoryFile에서 나는합니까?
은 좀 더 테스트 후 나는 적어도 클래스 (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
답변 해 주셔서 감사합니다. 'this.aid = aid; '대신'Util.arrayCopy (aid, (short) 0, this.aid, (short) 0, (short) 6); 변경 (불행히도)! – achiever