Я управляю небольшим сообществом онлайн-игр и обрабатываю базу данных учетных записей.Результаты поиска и отображения результатов [java]
Установка заключается в следующем:
Папки с именем Accounts Внутри каталога учетных записей, есть 200,000+ текстовых файлов, организованные по имени игрока. Доступ к этой папке вручную - это боль из-за необходимой оперативной памяти для поиска и поиска файлов. Я нахожу это очень неудобным.
Я обращаюсь к этому каталогу, чтобы отправлять напоминания о пароле или рекорды о том, кто играет дольше всех.
Ниже приведен пример файла учетной записи. Этот файл называется Falcon.txt
[ACCOUNT]
character-username = Falcon
character-password = falconpassword
[INFO]
character-coordx = 3252
character-coordy = 3432
character-active = yes
character-ismember = 1
character-messages = 5
character-lastconnection = [removed]
character-lastlogin = 2009-11-29
character-energy = 100
character-gametime = 193
character-gamecount = 183
[EQUIPMENT]
character-equip = 0 4724 0
character-equip = 1 1052 0
character-equip = 2 6585 0
character-equip = 3 4151 0
character-equip = 4 4720 0
character-equip = 5 1215 0
character-equip = 6 -1 0
character-equip = 7 4722 0
character-equip = 8 -1 0
character-equip = 9 775 0
character-equip = 10 1837 0
character-equip = 11 -1 0
character-equip = 12 6735 0
character-equip = 13 -1 0
[APPEARANCE]
character-look = 0 1
character-look = 1 1
character-look = 2 2
character-look = 3 3
character-look = 4 5
character-look = 5 2
[STATS]
character-skill = 0 1 0
character-skill = 1 1 0
character-skill = 2 1 0
character-skill = 3 1 0
character-skill = 4 1 0
character-skill = 5 1 0
character-skill = 6 1 0
character-skill = 7 1 0
character-skill = 8 1 0
character-skill = 9 1 0
character-skill = 10 1 0
character-skill = 11 1 0
character-skill = 12 1 0
character-skill = 13 1 0
character-skill = 14 1 0
character-skill = 15 1 0
character-skill = 16 1 0
character-skill = 17 1 0
character-skill = 18 1 0
character-skill = 19 1 0
character-skill = 20 1 0
[ITEMS]
[BANK]
[FRIENDS]
[IGNORES]
[END]
Существует огромная база данных и поиск по каталогу в файлах для значений.
Значения Я имею в виду идентификаторы элементов или IP-адреса для поиска и отслеживания других учетных записей.
Однако у меня есть новая проблема, и моя разработка для этого грохота.
Как вы можете видеть в файле, строки организованы вкладками.
character-equip = 0 4724 1
Если я ставлю значение 4724 в моем приложении поиска, я хочу, чтобы распечатать вкладку значение 1 справа от найденного результата поиска. Я хочу, чтобы он распечатывал значение только для найденных результатов, а не дополнительных результатов.
Таким образом, поиск может выглядеть следующим образом:
1 "Введите элемент для поиска:"
2: "Счет Falcon.txt имеет 1" "Введите элемент для поиска 4724"
нажмите любую клавишу для продолжения ...
Или, если там было больше количество этого оборудованного пункта
character-equip = 5 1239 102
1. «Введите элемент для поиска:»
2. «Введите элемент для поиска: 1239 "
3.« У счета Falcon2.txt есть 102! »
нажмите любую клавишу, чтобы продолжить ...
Я просто хочу ввести идентификатор элемента и показать его после найденного значения. Белое пространство - это вкладка. Я попытался сделать это, и единственный успешный способ получить какой-либо результат - поместить вкладку между поисковым термином. Так что, если я хочу, чтобы найти элемент 1239 типа документа это в CMD линии:
Enter item to find:<tab>1239<tab>
Было бы тогда искать то, что и будет отображать учетные записи с этим элементом в нем. Однако мне все же приходится индивидуально открывать счета, чтобы узнать количество этого элемента. Я хочу, чтобы результаты поиска отображали количество элемента, если значение найдено. Однако, если значение является количеством и оно пытается выполнить поиск по одной вкладке, я хочу, чтобы она либо пропустила, либо произнесла нуль.
Это то, что я имею в виду.
character-equip = 0 1024 1239
Enter item to find: 1239
Если он попадет этот счет, я хочу, чтобы результаты поиска отображается ноль, если он не может вкладку более или просматривать любые значения в белом пространстве. Поэтому он будет отображаться как нуль или ноль У учетной записи Falcon3.txt есть null!
или
Account Falcon3.txt has 0!
Я пытался это сделать, но я не уверен, как этого добиться.
Вот мой код.
import java.io.*;
import java.util.*;
public class ItemDatabase {
public static void main(String args[]) {
System.out.print("Enter item to find: ");
Scanner sc = new Scanner(System.in);
find(sc.nextLine());
}
public static void find(String delim) {
File dir = new File("accounts");
if (dir.exists()) {
String read;
try {
File files[] = dir.listFiles();
for (int i = 0; i < files.length; i++) {
File loaded = files[i];
if (loaded.getName().endsWith(".txt")) {
BufferedReader in = new BufferedReader(new FileReader(loaded));
StringBuffer load = new StringBuffer();
while ((read = in.readLine()) != null) {
load.append(read + "\n");
}
String delimiter[] = new String(load).split(delim);
if(delimiter.length > 1) {
System.out.println("Account " + loaded.getName() + "has " + delimiter[1] + "!");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("error: dir wasn't found!");
}
}
}
Спасибо, ребята, я надеюсь, вы можете мне помочь.
200.000 счетов! Вы вызываете коллекцию файлов в базу данных, есть ли причина, по которой вы не настроили базу данных для хранения всех этих данных? Если бы вы сделали этот поиск, это было бы почти неявной функцией системы. – rsp
rsp: Иногда разработка этих вещей начинается как персональный проект для друзей, а затем просто разрастается в размерах. Очень немногие делают подготовительные работы для интенсивного использования в своих проектах по хобби. – Esko