Датки клиента (болванки\заготовки скилов\итемов и т.д.), инфу с централа и еще парочки баз...Что парсить собрался?
Самый простой вариант без использования regexp = Files.readAllLines();Не типизированы, могу любой вид столбцу (началу) задать, а вот для остального "скилла" не хватает (не занимался этим вовсе)....
Пощупаю все советы, благодарю.
for(String nextLine : Files.readAllLines()) {
//code
}
BufferedReader br = new BufferedReader(new FileReader(FILE_PATH)
String line;
while ((line = br.readLine()) != null)
//do some stuff
public static LinkedHashMap<String, HashMap<String, String>> loadCSV(String name, boolean showLog, int idx)
{
LinkedHashMap<String, HashMap<String, String>> data = new LinkedHashMap<>();
LineNumberReader lnr = null;
try
{
File file = new File(name);
lnr = new LineNumberReader(new BufferedReader(new FileReader(file)));
String line = null;
String[] head = null;
if (showLog)
_log.info("Loading file " + name + "...");
while ((line = lnr.readLine()) != null)
{
if (line.trim().length() == 0)
continue;
line = line.trim();
if (head == null)
{
head = line.split("\t");
continue;
}
String[] vals = line.split("\t");
HashMap<String, String> _data = new HashMap<>();
for (int i = 0; i < vals.length; i++)
_data.put(head[i], vals[i]);
data.put(vals[idx], _data);
}
}
catch (FileNotFoundException e)
{
_log.error("File " + name + " not found.");
}
catch (Exception e)
{
_log.error("File " + name + " loading failed.");
}
finally
{
try
{
if (lnr != null)
lnr.close();
}
catch (Exception e1)
{}
if (showLog)
_log.info("File " + name + " loaded.");
}
return data;
}
public static LinkedHashMap<String, HashMap<String, String>> loadDAT(String name, boolean showLog, int... idx)
{
LinkedHashMap<String, HashMap<String, String>> data = new LinkedHashMap<>();
LineNumberReader lnr = null;
try
{
File file = new File(name);
lnr = new LineNumberReader(new BufferedReader(new FileReader(file)));
String line = null;
if (showLog)
_log.info("Loading file " + name + "...");
while ((line = lnr.readLine()) != null)
{
if (line.trim().length() == 0)
continue;
line = line.trim();
String[] vals = line.split("\t");
HashMap<String, String> _data = new HashMap<>();
String[] key = new String[idx.length];
int kIdx = 0;
for (int i = 0; i < vals.length; i++)
{
String[] t = vals[i].split("=");
if (t.length < 2)
t = new String[] { t[0], "" };
if (ArrayUtils.contains(idx, i))
key[kIdx++] = t[1];
_data.put(t[0], t[1]);
}
data.put(Strings.join("_", key), _data);
}
}
catch (FileNotFoundException e)
{
_log.error("File " + name + " not found.");
}
catch (Exception e)
{
_log.error("File " + name + " loading failed.", e);
}
finally
{
try
{
if (lnr != null)
lnr.close();
}
catch (Exception e1)
{}
if (showLog)
_log.info("File " + name + " loaded.");
}
return data;
}
о ничоси final fantasy 9 , sony plastation 1 помню такую игрушечку )Самый простой вариант без использования regexp = Files.readAllLines();
Этим способом парсил все абилки из фф9, имея такой исходник:Код:for(String nextLine : Files.readAllLines()) { //code }
каждый лайн = строка, дальше по ключевым словами этйо строки если они там есть.
Вещи, монстров и всё что является статическими данными. С монстрами посложнее будет, надо использовать html библы чтобы норм спарсить.о ничоси final fantasy 9 , sony plastation 1 помню такую игрушечку )
А намекни что ещё кроме абилок можно спарсить , так любопытно стало.
что есть парсинг
В большинстве случаев для парсинга любой информации, включая бинарную, достаточно уметь строитьс чем его едят
Так как они бинарные, используем связку утилит l2encdec + l2disasm для конвертации в простое представление, и потом парсим его, например как здесь.с клиент файлов л2
Если имеются в виду сайты с базами знаний по л2, то достаточно использовать регулярки или библиотеку для парсинга HTML, ну и многопоточность, чтоб занять как можно больше процессора/интернет-канала (ибо они будут простаивать из-за локов IO при получения данных со страниц сайта, например). Также, в редких случаях (редких в сфере л2) возможно понадобится купить/найти пачку прокси и научится эмулировать браузер, обходить капчу и еще чего хуже, если база знаний защищена. Все это достаточно тривиально при наличии желания либо денег.разных BD по л2
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?