Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 2
Регистрация: 26.03.2012
Сообщений: 88

Считывание из файла, когда знаем его структуру

26.01.2013, 04:18. Показов 1502. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно есть некоторые конфигурационные файлы. Типа:
Кликните здесь для просмотра всего текста
######################################## #
# Caladuen project #
# Login Server #
# Файл конфигурации сервера server.cfg #
# Настройка основных параметров таких #
# Как ip,port и данные подключения к бд #
# Admin@ld-games.com #
######################################## #

#Вся конфигурация в данном конфигурационном файле, ровно так же как и в других загружается единожды при запуске сервера
#И попадает в статические константы. Для того что бы изменения вступили в силу необходимо перезагрузить сервер
#Если он был запущен.

#ip адрес сервера авторизации
ipls= 127.0.0.1;
#port сервера авторизации
portls= 7770;
#ip адрес чат сервера
ipchs=127.0.0.1;
#Port чат сервера
portchs=7772;

#данные подключения к mysql
#Пользователь
userbd= root;
#Пароль
passwordbd=123321;
#Имя базы
namebd = caladuen;

#Насатройки ниже нужны для того что бы организовать бд на другой машине
#Если бд находится на том же физическом сервере что и сервер то не следует менять
#Настройки приведенные ниже

#ip адрес бд
bdip = 127.0.0.1;
#Порт бд
bdport = 3306;

#Производить ли автоматическую регистрацию пользователей?
autoregistr=false;

#Максимальное число попыток входа
#Стандартно 5
maxconect = 5;

#На сколько банить пользователя в секундах при превышении
#Максимальным попыток входа заданных выше.
#Если 0, то опция не действует(Не будет банить пользователей)
#Стандартно 5минут = 300с
bantime = 300;

#Максимальное количество клиентов.
maxusers = 1000;

#Уровень системных сообщений, вывод и лог
#Различается 2 уровня. DEBUG и NORMAL
#Если параметр true то будут выводится дополнительные сообщения с пометкой DEBUG
#Если параметр false то в вывод попадут только INFO и EROR
debugon=true;


Собственно нужно считать в при запуске приложения в java все эти поля. То есть в java считываем в static finaly. и потом в будущем проверяем и т.д.


Дак вот как собственно можно считать, пропуская строку с # и разделяя параметры на имязначения=значение ?

Можно даже не пример, ссылку хотя бы на мануал какой нибуть. И то в java не так давно...)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2013, 04:18
Ответы с готовыми решениями:

Считывание из файла в структуру
структура вида название_фильма,стоимость,режиссер.Данные в файле.Как считать название фильма чтобы,если оно состоит из двух и более...

Считывание из файла в структуру
Добрый день, столкнулся с такой проблемой. Есть файл со строками из 1 и 0 Пример: 1111110 1111000 1001011 ... Все строки...

Считывание данных из файла в структуру
из файла нужно считать данные и записать их в структуру. данные из файла: Петров П.П. С++ для чайников 2000 Программирование ...

8
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.01.2013, 10:13
http://docs.oracle.com/javase/... rties.html

смотрим на метод load(Reader reader)
0
1 / 1 / 2
Регистрация: 26.03.2012
Сообщений: 88
27.01.2013, 03:35  [ТС]
Пока получилось так
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    static void   loadconfig(){
 
        //File banip = new File("configs/banip.list");
        final String banip = "banip.list";
        char s;
        String line;
        String d;
        int i = 0;
 
 
        try {
            BufferedReader myfile = new BufferedReader ( new FileReader("configs/"+banip));
            while ((line=myfile.readLine()) != null)
            {
                if((s=(char)myfile.read())=='#')
                {
 
                }
            }
 
            //System.out.println(s);
        }
 
        catch (FileNotFoundException e) {
            logmanager.loginit("Не удалось найти конфигурационный файл banip.list", 2);
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
 
    }


Собственно как перейти на другую строку, если мы наткнулись на # ?

Добавлено через 36 минут
Вообщем решил использовать CharAt но полетели эксепшины. Не понятно откуда...
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static void   loadconfig(){
 
        //File banip = new File("configs/banip.list");
        final String banip = "banip.list";
        char s;
        String line;
        String d;
        int i = 0;
 
 
        try {
            BufferedReader myfile = new BufferedReader ( new FileReader("configs/"+banip));
            while ((line=myfile.readLine()) != null)
            {
 
               if((s=(char)line.charAt(0))!='#')//Если строка не начинается  с # значит это нужная нам строка
               {
                    System.out.println(line); //Пока выводим, да бы проверить, нужная ли это нам строка
               }
 
            }
 
            //System.out.println(s);
        }


Пишет мол
Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at loginserver.Start.loadconfig(Start.java: 54)
at loginserver.Start.main(Start.java:19)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:601)
at com.intellij.rt.execution.application.Ap pMain.main(AppMain.java:120)

Что не так с индексом?..

Вот файл который пытаюсь считывать
Кликните здесь для просмотра всего текста
######################################## #
# Caladuen project #
# Login Server #
# Файл конфигурации сервера banip.cfg #
# Cписок запрещенных ip адресов #
# Admin@ld-games.com #
######################################## #

#ip записываются по одному на строчку.
#Внимание!!! Эти пользователи не смогут зайти в игру. И будут получать сообщение о том что они забанены.
#Это так называеммый вечный бан по ip. Бан на какой либо промежуток времени происходит по средствам бд.
#Пример:
#127.0.0.1
#127.0.0.2
#127.0.0.3
Вот это должен вывести
И это
Ну и как без этого то?
#И еще раз коментарий
А вот это в последнюю очередь


Добавлено через 28 минут
Разобрался... Это не метод тупит. А я туплю, что и было очевидно))) Только вот искал я очень долго ошибки в коде, и так пробовал, и так. А оказалось что просто у меня с файлом проблемы.А у него длинная история... Создавал под debian, потом правил в windows + не понятно какой табуляцией сверху была сделана рамка( там и табуляция, и пробелы) в итоге оно у меня и выдавало ошибки.
Вообщем то создал новый файл в кодировке utf-8(без bom)
Кликните здесь для просмотра всего текста
#Какой либо коментарий!
Число1
число2
число3

И все отлично сработало, пропустив коментарий.


p/s только сейчас понял на сколько глупо было создавать подобную тему...Все что было нужно, зделать цикл и продумать логику(конкретно для моего случая) сначала копал не в ту сторону запросами к гуглу мол как считать строку из файла java. А потом уже стал искать описание классов, когда натыкался на темы и т.д. Ну и наткнулся на вот такую статью http://kek.ksu.ru/EOS/Java/gl4_3.html от куда и стал черпать)) потом по документации метада, и stinga от туда то и узнал что можно получить символ как charat(index).
Вообщем проблема у меня вечно только одна.А именно не знание классов. То есть. вот например хочу что то сделать, а какой класс за это отвечает не понятно) и начинается поиск... )) ну это поди у всех так, на первых парах, потом уже запоминается.
Сейчас вот уже перейду к работе с сетью, как уже писал выше пишу я сервер под mmorpg. Не подскажете классы, где о чем почитать, может какая статейка?. С сетью раньше не работал вообще,не в C# не в другом языке, так что вот только собираюсь осваивать. Где то находил интересный мануал, там сравнивались сокеты, с некоторыми гнездами к которым подключаются и т.д Вообщем интересно все по данному поводу.
Дело в том что пакеты придется выталкивать не заполненные, и желательно как можно меньше. Ибо грузить лишний раз трафик не гуд, он сам нагрузится когда придет время(mmorpg же, куча информации синхронизировать и т.д ну понимаете да?) ну и вот сообственно хочется подойти к этому вопросу так сказать во все оружии. ЧТо бы потом не пришлось переделывать. Протокол думаю использовать TCP., как основной. И возможно местами UDP. За последний не хочется браться из за того что у него бывают потери и т.д придется всячески проверять потерялись ли байты. А с байтами у меня не айс...Из коледжа то не чего не помню по поводу байтов не перевести из двоичной в десетичную не обратно. В свое время думал что эта фигня мне не потребуется, так как я уже на то время писал на C# и не использовал байты, и думал что зачем мне так углублятся, в низкоуровневое программирование, когда я буду писать на высокоуровневых языках?... Ну вот и встрял теперь))) все равно начинаю понимать что стоит изучить каким образом строятся стоки из байтов, каким образом передаются байты по сети, как их сравнивать.. Ухх что то я много тут настрочил. Вообщем если у кого есть какая либо информация по тому что я описал, будь те добры поделится))) И да, ваше мнение, стоит ли лезть в байты, и с чего начать? все таки они пригодятся, особенно в сети.. Ну хотя бы понимать как они собираются и т.д))

Заранее благодарен)

Добавлено через 12 минут
Да и еще, а вот в какую сторону смотреть по поводу запрета ip из определенной страны. Ну вот допустим хочу запретить доступ в игру из китая. Как по ip методами java можно определить в какой стране пользователь. И реально ли это? Подразумеваю что да, так как вот например когда скажем на машинку с той же debian обрушивается куча атак из , ну скажем Кореи то просто блакируют эту страну. Видел это где то на форуме, советовали заблокировать доступ из стран, в файерволе.
Получается это реально?. Можно узнать страну? дальше я уже сам набросаню констант и буду ifами сравнивать, и пускать или нет)
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.01.2013, 03:36
Цитата Сообщение от inclub Посмотреть сообщение
p/s только сейчас понял на сколько глупо было создавать подобную тему..
глупо изобретать велосипед
прочитали бы документацию по ссылке и сделали бы простенький код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
 
 
public class ConfigLoader {
    
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            properties.load(new FileReader("config.txt"));
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        PrintWriter pw = new PrintWriter(System.out);
        properties.list(pw);
        pw.flush();
        pw.close();
    }
}
вот как прочитался ваш файлик

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- listing properties --
maxusers=1000;
debugon=true; 
passwordbd=123321;
autoregistr=false;
maxconect=5;
ipls=127.0.0.1;
namebd=caladuen;
bantime=300;
portls=7770;
bdport=3306;
bdip=127.0.0.1;
userbd=root;
portchs=7772;
ipchs=127.0.0.1;
1
1 / 1 / 2
Регистрация: 26.03.2012
Сообщений: 88
27.01.2013, 03:39  [ТС]
Ого))) Неплохо)остается только разбить) ну это уже сделаю) да, так гораздо проще получается))
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.01.2013, 03:40
Цитата Сообщение от inclub Посмотреть сообщение
Получается это реально?. Можно узнать страну? дальше я уже сам набросаню констант и буду ifами сравнивать, и пускать или нет)
как вам ещё много предстоит узнать
но ничего - все мы начинали с нуля.

Посоветую начинать с вещей попроще, тогда успех гарантирован
0
1 / 1 / 2
Регистрация: 26.03.2012
Сообщений: 88
27.01.2013, 03:46  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
как вам ещё много предстоит узнать
но ничего - все мы начинали с нуля.

Посоветую начинать с вещей попроще, тогда успех гарантирован

Вообщем то нарыл) http://habrahabr.ru/post/138067/ используют базы sypexgeo, остается поискать аналоги, посмотреть может у конкурентов базы посвежее и собственно прикручивать)
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.01.2013, 04:05
Цитата Сообщение от inclub Посмотреть сообщение
остается только разбить)
разбивать ненадо
просто избавьтесь в конфиге от точкизапятой (всё равно от них никакой пользы)
Java
1
System.out.println(properties.getProperty("maxusers"));
0
1 / 1 / 2
Регистрация: 26.03.2012
Сообщений: 88
27.01.2013, 06:11  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
разбивать ненадо
просто избавьтесь в конфиге от точкизапятой (всё равно от них никакой пользы)
Java
1
System.out.println(properties.getProperty("maxusers"));
Согласен)) Большое спасибо) ито бы я так и делал через bufer readerer) Долго,прожорливо) и делая то что можно сделать намного проще)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2013, 06:11
Помогаю со студенческими работами здесь

Считывание информации из файла в структуру
Добрый день! Помогите, пожалуйста, с решением задачи. Дан символьный файл f, содержащий сведения о студентах, записанные по...

Считывание слов из файла, в структуру данных
#include <iostream> #include <fstream> using namespace std; struct Myword { char *word; int i; };

Считывание смешанной строки из файла в структуру
Формат файла и данные записываемые структурной формой такие: Первое ФИО 1 | ж | 2001 | Минск | Неизвестное заболевание | 80291111111 ...

Считывание данных из текстового файла в структуру
Программа не желает считывать данные из текстового файла, компилируется и работает норм, но как только нажму считать данные из файла, то...

Считывание всей строки из файла в структуру
Привет. Есть программа, считывающая из файла некоторые данные про рабочих и вывод их на экран с использованием структуры. Проблема...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru