2015-12-16 3 views
-2

Мне нужно создать программное обеспечение для Windows. У меня есть несколько простых файлов чертежей автокадров (* .dxf). Если я получу новый чертеж, мне нужно проверить, существует ли чертеж в системе. Файл * .dxf содержит разные разделы (HEADER, CLASSES, ENTITIES ETC). Мне нужен только раздел «ENTITIES», где даны координаты строк. , например,добавление файлов в базу данных - перекрестное сопоставление содержимого, чтобы проверить, существует ли запись.

 
ENTITIES 
    0 
LINE 
    5 
3B 
    8 
LAYER1 
10 
221.190559 
20 
185.708994 
30 
0.0 
11 
241.344721 
21 
183.18762 
31 
0.0 
    0 
LINE 
    5 
3C 
    8 
LAYER1 
10 
241.344721 
20 
183.18762 
30 
0.0 
11 
242.099368 
21 
181.026461 
31 
0.0 
    0 
ENDSEC 

следующая строка после того, как «10» дает х координаты начальной точки линии линии после того, как «20» дает у координаты начальной точки линии

линию после того, как " 11 "дает x координаты последней точки линии строка после" 21 "дает y координаты последней точки линии

Мне нужно извлечь эти значения и добавить в базу данных. Если я получу новый файл, мне нужно проверить, соответствует ли новый чертеж любому в базе данных. Это не требование к серверу. Мне нужно использовать это в своем компьютере. Теперь у меня есть базовые знания в java, sql. может ли кто-нибудь направить меня на то, что все инструменты, которые мне могут понадобиться для этого, и маршрут, которому я должен следовать.

+0

** следующее целое число после "10" "20" и "11" "21" – mahe

ответ

0

Я разделю ответ на две части

Добывающие Соответствующие INFOS

Я полагаю, что HEADER & КЛАССЫ части не обязательны для оценки, если файл был изменен.

Я бы прочитал Файл в String в Java (или, если они действительно большие, работайте с потоками, но String проще для начинающих). После этого вы можете извлечь раздел, который вам подходит - в вашем случае это раздел сущностей.

Если вам нужна идея, как это сработает - How to split a string in Java

По сравнению с существующими файлами

Я бы не хранить всю эту строку в базе данных, если это только для сравнения, если файл уже существует. Я бы использовал хэш-функцию для вычисления хэша файла (вы можете представить его как отпечаток документа) и только сохранение хеша в базе данных. Когда приходит новый файл, вы снова вычисляете хэш соответствующих частей и сопоставляете его с существующими хэшами в базе данных. Таким образом, вам не нужно сравнивать с каждым полным байтом файла для байт в вашей базе данных, вам нужно будет только посмотреть на хэш - что было бы просто SELECT * FROM Files WHERE hash = ':yourhashgoeshere'

Если вы не знаете, как реализовать такой метод хэширования - Hash String via SHA-256 in Java

+0

Я не могу просто сравнить точную сущность раздела одного файла с другим, потому что координаты могут меняться, даже если u переместите чертеж из одного места в другое. Также приходит случай, когда я могу иметь 90% соответствия. Мне тоже нужно это сделать ... поэтому я не думаю, что могу использовать хэш. – mahe

 Смежные вопросы

  • Нет связанных вопросов^_^