读取本地exe文件 第一列是工号 第二列是打卡时间,注意打卡时间可能有多次,取每个工号每天最晚打卡时间减去最早打卡时间结果与最早时间和最晚时间分别输出控制台 使用java1.8 实现
时间: 2024-04-14 19:27:25 浏览: 199
你可以使用以下Java代码来实现读取本地exe文件,并计算每个工号每天的最晚打卡时间减去最早打卡时间:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
public class ReadExeFile {
public static void main(String[] args) {
String filePath = "path/to/exe/file.exe"; // 替换为你的exe文件路径
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
Map<String, LocalTime[]> employeeTimes = new HashMap<>();
while ((line = br.readLine()) != null) {
String[] columns = line.split(" ");
String employeeId = columns[0];
LocalTime timestamp = LocalTime.parse(columns[1], DateTimeFormatter.ofPattern("HH:mm:ss"));
if (employeeTimes.containsKey(employeeId)) {
LocalTime[] times = employeeTimes.get(employeeId);
times[0] = times[0].isBefore(timestamp) ? times[0] : timestamp; // 更新最晚打卡时间
times[1] = times[1].isAfter(timestamp) ? times[1] : timestamp; // 更新最早打卡时间
} else {
employeeTimes.put(employeeId, new LocalTime[]{timestamp, timestamp});
}
}
for (Map.Entry<String, LocalTime[]> entry : employeeTimes.entrySet()) {
String employeeId = entry.getKey();
LocalTime[] times = entry.getValue();
LocalTime earliestTime = times[1];
LocalTime latestTime = times[0];
System.out.println("Employee ID: " + employeeId);
System.out.println("Earliest Time: " + earliestTime);
System.out.println("Latest Time: " + latestTime);
System.out.println("Time Difference: " + earliestTime.until(latestTime));
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
请将代码中的 `path/to/exe/file.exe` 替换为你的exe文件的实际路径。此代码会读取exe文件的每一行,将工号和对应的打卡时间提取出来,并计算每个工号每天的最晚打卡时间减去最早打卡时间,并输出到控制台。
阅读全文