gpt4 book ai didi

java - 构建文件夹紧凑树的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:57:36 24 4
gpt4 key购买 nike

我正在制作定义文件列表的浏览器。我想压缩空文件夹(就像通常基于 idea 的 IDE 一样)

最初我有一个文件列表(我从 MediaStore 获取):

folder1/folder2/folder3/file1.mp3
folder1/folder2/folder3/file2.mp3
folder1/file3.mp3

我希望我的浏览器具有以下结构:

folder1
-folder2/folder3
-file1.mp3
-file2.mp3
-file3.mp3

我是怎么做到的:

当我第一次从 MediaStore 获取文件时,我在数据库中创建了一个表:

id name parent_id has_songs
0 folder1 -1 1
1 folder2 0 0
2 folder3 1 1

每当浏览器显示文件夹时,它都会向数据库发出请求。然后我开始检查里面的文件夹(每次检查都需要向数据库发出额外请求):如果一个文件夹没有歌曲并且只有一个子文件夹然后压缩它们,然后检查下一个和下一个。

对于上面的示例,如果我想查看 folder1 的“内部”,它会向本地数据库发出 3 个请求:

1. Get list of all folders (Make a request to the db here)
2. Check folder2 has one subfolder and doesn't have songs (Make a request to the db here)
3. Check folder3 has one subfolder and doesn't have songs (Make a request to the db here)

<强>1。这是实现它的最佳方式吗?

<强>2。性能关键吗 在用户点击时向本地数据库发出如此多的请求?

最佳答案

这取决于您的环境。 :)

一般来说:如果文件列表相对较小,则值得考虑是否可以将所有信息保存在内存中。如果您有足够的空闲内存,这可能是最好的解决方案,因为它比访问数据库要快得多。我曾经创建一个实际代表目录和文件结构的对象,然后 View 端根据用户需求打开和关闭 block 。 (全部打开,全部关闭等)

这是实现它的最佳方式吗?环境是关键。正如我提到的,这可能是一个很好的解决方案。如果您使用的是远程(或更高级的 [SQLite is able to do it] )数据库服务器,那么考虑创建一个包含子计数的 View 也是一件好事。 (或者简单地更改生成的表,引入“inside_dir_count”字段。)这样您就可以获取整个路径。

在用户点击时向本地数据库发出如此多的请求是否对性能至关重要?这是对您在此处表示的数据库的相对较小的请求,如果它真的取决于用户的点击,这是一个很好的解决方案。提到的本地数据库应该会很快响应。这个 Action 不是每秒会发生 1000 次的事情,所以在我个人看来这是一个很好的解决方案,但也有改进的余地,就像所有事情一样。

关于java - 构建文件夹紧凑树的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37539813/

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