Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
scanqrwhitecopy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
scanqrwhitecopy
Commits
8fad5d7a
Commit
8fad5d7a
authored
Jan 22, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
0060aeff
11eb31a3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
4 deletions
+38
-4
CleanJunkActivity.kt
.../main/java/com/base/scanqrclear/luma/CleanJunkActivity.kt
+1
-1
FileHelps.kt
app/src/main/java/com/base/scanqrclear/luma/FileHelps.kt
+37
-3
No files found.
app/src/main/java/com/base/scanqrclear/luma/CleanJunkActivity.kt
View file @
8fad5d7a
...
@@ -79,7 +79,7 @@ class CleanJunkActivity : BaseActivity2() {
...
@@ -79,7 +79,7 @@ class CleanJunkActivity : BaseActivity2() {
binding
.
tvClean
.
visibility
=
View
.
GONE
binding
.
tvClean
.
visibility
=
View
.
GONE
isDisableBack
=
true
isDisableBack
=
true
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
emptyFoldersDeferred
=
async
{
FileHelps
.
findEmptyFolders
()
}
val
emptyFoldersDeferred
=
async
{
FileHelps
.
findEmptyFolders
(
lifecycleScope
)
}
val
filesDeferred
=
async
{
MediaHelps
.
findSpecifiedFiles
(
this
@CleanJunkActivity
)
}
val
filesDeferred
=
async
{
MediaHelps
.
findSpecifiedFiles
(
this
@CleanJunkActivity
)
}
val
emptyFolder
=
emptyFoldersDeferred
.
await
()
val
emptyFolder
=
emptyFoldersDeferred
.
await
()
val
files
=
filesDeferred
.
await
()
val
files
=
filesDeferred
.
await
()
...
...
app/src/main/java/com/base/scanqrclear/luma/FileHelps.kt
View file @
8fad5d7a
package
com.base.scanqrclear.luma
package
com.base.scanqrclear.luma
import
android.os.Environment
import
android.os.Environment
import
androidx.lifecycle.LifecycleCoroutineScope
import
com.base.scanqrclear.bean.FileBean
import
com.base.scanqrclear.bean.FileBean
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.joinAll
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
java.io.File
import
java.io.File
object
FileHelps
{
object
FileHelps
{
...
@@ -16,13 +21,41 @@ object FileHelps {
...
@@ -16,13 +21,41 @@ object FileHelps {
return
list
return
list
}
}
fun
findEmptyFolders
(
):
MutableList
<
FileBean
>
{
suspend
fun
findEmptyFolders
(
lifecycleScope
:
LifecycleCoroutineScope
):
MutableList
<
FileBean
>
{
val
externalStorage
Dir
=
Environment
.
getExternalStorageDirectory
()
val
root
Dir
=
Environment
.
getExternalStorageDirectory
()
val
filters
=
arrayOf
(
"/storage/emulated/0/Android/data"
,
"/storage/emulated/0/Android/obb"
)
val
filters
=
arrayOf
(
"/storage/emulated/0/Android/data"
,
"/storage/emulated/0/Android/obb"
)
val
emptyFolders
=
getAllEmptyFolders
(
externalStorageDir
,
filters
)
val
emptyFolders
=
mutableListOf
<
File
>()
// 使用协程并发遍历文件夹
withContext
(
Dispatchers
.
IO
)
{
findEmptyFolders
(
lifecycleScope
,
rootDir
,
filters
,
emptyFolders
)
}
return
emptyFolders
.
map
{
FileBean
(
it
.
name
,
it
.
path
,
length
=
4
*
1024
)
}.
toMutableList
()
return
emptyFolders
.
map
{
FileBean
(
it
.
name
,
it
.
path
,
length
=
4
*
1024
)
}.
toMutableList
()
}
}
private
suspend
fun
findEmptyFolders
(
lifecycleScope
:
LifecycleCoroutineScope
,
folder
:
File
,
filters
:
Array
<
String
>,
emptyFolders
:
MutableList
<
File
>)
{
val
files
=
folder
.
listFiles
()
?:
return
if
(
files
.
isEmpty
()
&&
!
filters
.
contains
(
folder
.
path
))
{
emptyFolders
.
add
(
folder
)
return
}
files
.
filter
{
it
.
isDirectory
}.
map
{
file
->
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
findEmptyFolders
(
lifecycleScope
,
file
,
filters
,
emptyFolders
)
}
}.
joinAll
()
// 等待所有子任务完成
}
// fun findEmptyFolders(): MutableList<FileBean> {
// val externalStorageDir = Environment.getExternalStorageDirectory()
// val filters = arrayOf("/storage/emulated/0/Android/data", "/storage/emulated/0/Android/obb")
// val emptyFolders = getAllEmptyFolders(externalStorageDir, filters)
// return emptyFolders.map { FileBean(it.name, it.path, length = 4 * 1024) }.toMutableList()
// }
fun
findTempFiles
():
MutableList
<
FileBean
>
{
fun
findTempFiles
():
MutableList
<
FileBean
>
{
val
rootDir
=
Environment
.
getExternalStorageDirectory
()
val
rootDir
=
Environment
.
getExternalStorageDirectory
()
return
findFilesRecursive
(
rootDir
,
arrayOf
(
".temp"
))
return
findFilesRecursive
(
rootDir
,
arrayOf
(
".temp"
))
...
@@ -64,6 +97,7 @@ object FileHelps {
...
@@ -64,6 +97,7 @@ object FileHelps {
return
"${Environment.getExternalStorageDirectory()}/$relativePath"
return
"${Environment.getExternalStorageDirectory()}/$relativePath"
}
}
private
fun
getAllEmptyFolders
(
root
:
File
,
filters
:
Array
<
String
>):
List
<
File
>
{
private
fun
getAllEmptyFolders
(
root
:
File
,
filters
:
Array
<
String
>):
List
<
File
>
{
return
root
.
walk
()
return
root
.
walk
()
.
filter
{
.
filter
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment