Java 实现NFC 数据写入和读取
NFC(近场通信)是一种短距离无线通信技术,允许设备之间进行近距离通信。在Java中,我们可以使用javax.smartcardio
包来实现NFC数据的写入和读取。
NFC 数据写入
要实现NFC数据的写入,我们需要先获取NFC卡并建立与之的连接,然后向卡片发送APDU命令进行写入操作。
下面是一个使用Java实现NFC数据写入的示例代码:
import javax.smartcardio.*;
public class NFCWriter {
public static void main(String[] args) {
try {
// 获取NFC读卡器
TerminalFactory terminalFactory = TerminalFactory.getDefault();
CardTerminals cardTerminals = terminalFactory.terminals();
CardTerminal cardTerminal = cardTerminals.list().get(0);
// 连接NFC卡
Card card = cardTerminal.connect("*");
// 获取卡片通道
CardChannel cardChannel = card.getBasicChannel();
// 构造写入APDU命令
byte[] writeCommand = new byte[]{(byte) 0xFF, (byte) 0xD6, (byte) 0x00, (byte) 0x04,
(byte) 0x04, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF};
// 发送APDU命令进行写入操作
byte[] response = cardChannel.transmit(new CommandAPDU(writeCommand));
// 关闭连接
card.disconnect(false);
System.out.println("数据写入成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们首先通过TerminalFactory
获取默认的NFC读卡器,然后使用CardTerminal
建立与NFC卡的连接。接下来,我们获取卡片通道,构造写入APDU命令并发送该命令进行写入操作。最后,我们关闭与NFC卡的连接。
NFC 数据读取
要实现NFC数据的读取,我们需要同样获取NFC卡并建立与之的连接,然后向卡片发送APDU命令进行读取操作。
下面是一个使用Java实现NFC数据读取的示例代码:
import javax.smartcardio.*;
public class NFCReader {
public static void main(String[] args) {
try {
// 获取NFC读卡器
TerminalFactory terminalFactory = TerminalFactory.getDefault();
CardTerminals cardTerminals = terminalFactory.terminals();
CardTerminal cardTerminal = cardTerminals.list().get(0);
// 连接NFC卡
Card card = cardTerminal.connect("*");
// 获取卡片通道
CardChannel cardChannel = card.getBasicChannel();
// 构造读取APDU命令
byte[] readCommand = new byte[]{(byte) 0xFF, (byte) 0xB0, (byte) 0x00, (byte) 0x04, (byte) 0x10};
// 发送APDU命令进行读取操作
byte[] response = cardChannel.transmit(new CommandAPDU(readCommand));
// 解析响应数据
byte[] data = response.clone();
// 关闭连接
card.disconnect(false);
System.out.println("读取到的数据:" + new String(data));
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们同样通过TerminalFactory
获取默认的NFC读卡器,然后使用CardTerminal
建立与NFC卡的连接。接下来,我们获取卡片通道,构造读取APDU命令并发送该命令进行读取操作。最后,我们关闭与NFC卡的连接,并解析响应数据。
甘特图
下面是一个使用mermaid语法绘制的NFC数据写入和读取的甘特图:
gantt
title NFC 数据写入和读取
section 写入
建立连接 : 2022-01-01, 1d
发送写入命令 : 2022-01-02, 1d
关闭连接 : 2022-01-03, 1d
section 读取
建立连接 : 2022-01-04, 1d
发送读取命令 : 2022-01-