gpt4 book ai didi

java - 寻找存储文件名的正确解决方案

转载 作者:搜寻专家 更新时间:2023-10-30 20:51:09 25 4
gpt4 key购买 nike

刚开始我的爱好项目,现在我来这里是为了获得有关进行正确的数据库设计/查询的帮助。我制作了一个简单的 Java 程序,它循环遍历文件夹的内容。我想将此内容保存到 MySQL 数据库,所以我在 Java 中添加了一个连接器到我的数据库,在 MySQL 中创建了一个表和列"file"、“路径”和“id”、“日期”。

所以现在重要/有趣的事情是,每次我想用 Java 将文件名添加到 MySQL 时,我都会这样做(当按下 GUI 按钮时,我会调用执行此操作的方法):

  1. 删除具有相同文件路径的所有条目 - 这是为了确保我将获得与路径中的内容完全相同的新条目。
  2. Java 循环:将文件信息插入到列 id、路径、文件名和文件添加到数据库的日期。

通过这种方式,我始终可以确保将要添加到数据库中的文件名始终是最新的,无论我重命名还是删除文件,它都会是最新的,因为表将删除它的条目并写入新信息。旧信息 -> 删除旧信息 - 插入新信息 -> 最新信息。

我知道这可能不是最好的解决方案,但它确实有效,但现在我被困在了下一步我想做的事情上。我想添加文件的差异以了解在两次插入之间添加和删除了哪些文件,这是我的问题,因为条目在我无法比较的新插入之前被删除。您将如何更改设计或解决方案?欢迎所有想法,因为我很新鲜,如果你能告诉我查询的样子,我将不胜感激。

最佳答案

不要先删除所有行。只删除那些被删除的(或者更好的是,只需按照我在下面的建议将它们标记为“不活动”)。首先查询您的数据库,看看上次那里有什么。

我会在您的表中保留名为“非 Activity ”的附加列。默认情况下为 FALSE,对于已删除的文件为 TRUE。请记住,由于您的文件是通过file+path+id唯一标识的,因此重命名任何文件确实是一种删除旧文件并创建新文件的操作。

从数据库中删除内容不是一个好主意,因为您可能总是会意外删除某些内容(代码中的错误)并且无法取回数据。

另外要做的是将散列添加到您的表中。这样您就可以检查文件是否真的被更改了。没有必要将文件重新添加到数据库中,因为它没有改变。参见 Getting a File's MD5 Checksum in Java了解更多信息。

关于java - 寻找存储文件名的正确解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42891971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com