-2

我需要制作一个基于 Windows 的桌面软件。我有一些简单的 AutoCAD 绘图文件 (*.dxf)。如果我得到一张新图纸,我需要检查该图纸是否存在于系统中。*.dxf 文件包含不同的部分(标题、类、实体等)。我只需要给出线条坐标的“实体”部分。例如,

实体
  0
线
  5
3B
  8
第一层
 10
221.190559
 20
185.708994
 30
0.0
 11
241.344721
 21
183.18762
 31
0.0
  0
线
  5
3C
  8
第一层
 10
241.344721
 20
183.18762
 30
0.0
 11
242.099368
 21
181.026461
 31
0.0
  0
ENDSEC

"10" 之后的下一行给出了行起点的 x 坐标 "20" 之后的行给出了行起点的 y 坐标

"11" 之后的行给出行最后一点的 x 坐标 "21" 之后的行给出行最后一点的 y 坐标

我需要提取这些值并添加到数据库中。如果我得到一个新文件,我需要检查新图形是否与数据库中的任何匹配。这不是基于服务器的要求。我需要在我的电脑上使用它。现在,我对java,sql有了基本的了解。任何人都可以指导我了解我可能需要的所有工具以及我应该遵循的路线。

4

1 回答 1

0

我将答案分为两部分

提取相关信息

我假设 HEADER & CLASSES 部分对于评估文件是否已更改不是必需的。

我会将文件读入 Java 中的字符串(或者如果它们真的很大,可以使用流,但字符串对于初学者来说更容易)。之后,您可以提取与您相关的部分 - 在您的情况下,它是实体部分。

如果您需要了解它是如何工作的 -如何在 Java 中拆分字符串

与现有文件比较

我不会将整个字符串存储在数据库中,如果它只是为了匹配文件是否已经存在。我会使用散列函数来计算文件的散列(你可以把它想象成文档的指纹)并且只将散列存储在数据库中。当一个新文件到达时,您再次计算相关部分的哈希并将其与数据库中现有的哈希相匹配。这样,您无需与数据库中的每个完整文件字节逐字节进行比较,您只需要查看哈希值 - 这将是一个简单的SELECT * FROM Files WHERE hash = ':yourhashgoeshere'

如果您不确定如何实现这样的哈希方法 - Hash String via SHA-256 in Java

于 2015-12-16T10:15:32.157 回答