# 档案
## 目 录
1. [Gradle 依赖](#gradle-dependency)
2. [文件选择器](#file-choosers)1。[基础知识](#basics)2。[过滤器](#filter)3。[空文本](#empty-text)4。[文件夹创建](#folder-creation)
3. [文件夹选择器](#folder-choosers)1。[基础知识](#basics-1)2。[过滤器](#filter-1)3。[空文本](#empty-text-1)4。[文件夹创建](#folder-creation-1)
## Gradle 依赖
[  ](https://repo1.maven.org/maven2/com/afollestad/material-dialogs/files)
`files` 模块包含对核心模块的扩展,例如文件和文件夹选择器。
```gradle
dependencies {
...
implementation 'com.afollestad.material-dialogs:files:3.2.1'
}
```
## File Choosers
### Basics
注意:文件选择器要求你的应用程序具有 `READ_EXTERNAL_STORAGE` 的权限,否则目录列表将返回为空。
在 `MaterialDialog` 上使用 `fileChooser` 扩展名创建文件选择器:
```kotlin
MaterialDialog(this).show {
fileChooser { dialog, file ->
// File selected
}
}
```
它显示了所有的文件和文件夹,从外部存储目录开始。点击文件会调用回调并取消对话框。
你可以更改最初列出的目录:
```kotlin
val initialFolder = File(getExternalStorageDirectory(), "Download")
MaterialDialog(this).show {
fileChooser(initialDirectory = initialFolder) { dialog, file ->
// File selected
}
}
```
如果存在一个积极的行动按钮,点击一个文件将选择它,但回调是不是调用,直到积极的行动按钮被按下。
### Filter
可以应用一个过滤器来只显示你希望显示的文件和目录:
```kotlin
// show ALL folders, and files that start with the letter 'a'
val myFilter: FileFilter = { it.isDirectory || it.nameWithoutExtension.startsWith("a", true) }
MaterialDialog(this).show {
fileChooser(filter = myFilter) { dialog, file ->
// File selected
}
}
```
### Empty Text
当文件夹中没有内容时,将显示空文本。你可以配置空文本标签:
```kotlin
MaterialDialog(this).show {
fileChooser(emptyTextRes = R.string.custom_label) { dialog, file ->
// File selected
}
}
```
### Folder Creation
你可以允许用户创建文件夹。
```kotlin
MaterialDialog(this).show {
fileChooser(
allowFolderCreation = true,
folderCreationLabel = R.string.new_folder // optional as well
) { dialog, file ->
// File selected
}
}
```
此“新建文件夹”选项仅在可写的目录中显示。
## Folder Choosers
注意:文件夹选择器要求你的应用程序具有 `READ_EXTERNAL_STORAGE` 的权限,否则目录列表将返回为空。
文件夹选择器与文件选择器基本相同,但有几个小区别:1)即使应用了自定义过滤器,也只显示文件夹。2)选择回调不会在项目单击时调用,只有在按下“积极行动”按钮时,才会在当前查看的文件夹中调用它。
### Basics
```kotlin
MaterialDialog(this).show {
folderChooser { dialog, folder ->
// Folder selected
}
}
```
### Filter
你可以像使用文件选择器一样应用过滤器。
```kotlin
// show only folders that start with the letter 'a'
val myFilter: FileFilter = { it.name.startsWith("a", true) }
MaterialDialog(this).show {
folderChooser(filter = myFilter) { dialog, file ->
// Folder selected
}
}
```
### Empty Text
当文件夹中没有内容时,将显示空文本。你可以配置空文本标签:
```kotlin
MaterialDialog(this).show {
folderChooser(emptyTextRes = R.string.custom_label) { dialog, file ->
// File selected
}
}
```
### Folder Creation
你可以允许用户创建文件夹。
```kotlin
MaterialDialog(this).show {
folderChooser(
allowFolderCreation = true,
folderCreationLabel = R.string.new_folder // optional as well
) { dialog, file ->
// File selected
}
}
```
此“新建文件夹”选项仅在可写的目录中显示。