Как создать и заполнить hashmap из файла access.log
Есть файл access.log, расположен он на C:\java
и имеет структуру время_длина запроса_ip-адрес_код/статус_байты данных_метод_URL_пользователь_источник_тип где '_'- пробел.
Как заполнить HashMap?
Пример записи в файле acces.log:
1360425902.620 2 192.168.50.8 TCP_DENIED/403 3867 CONNECT gstat.imgsmail.ru:443 - HIER_NONE/- text/html
Ответы (1 шт):
Автор решения: Алексей Ковальчук
→ Ссылка
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
public class Debug2 {
public static void main(String[] args) throws Exception {
File file = new File("C:\\java\\access.log");
Map<String, String> map = new HashMap<>();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
String[] data = line.split("\\s+");
String time = data[0];
String ip = data[2];
String url = data[8];
// получаем другие данные по индексу в том порядке, в каком они идут в логах
map.put(ip, url); // заполняем map, подставляем значения, какие хотим в ключ и значение
}
}
System.out.println(map);
}
}
Пример с своим классом IpData:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
public class Debug2 {
public static void main(String[] args) throws Exception {
File file = new File("C:\\java\\access.log");
Map<String, IpData> map = new HashMap<>();
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
String[] data = line.split("\\s+");
String time = data[0];
String ip = data[2];
String url = data[8];
// получаем другие данные по индексу в том порядке, в каком они идут в логах
// создаем объект своего класса, в который сохраняем все данные, связанные с ip
IpData ipData = new IpData();
ipData.time = time;
ipData.url = url;
map.put(ip, ipData); // заполняем map, подставляем значения, какие хотим в ключ и значение
}
}
System.out.println(map);
}
static class IpData {
String time;
String url;
}
}