Создание папки в Kotlin - PullRequest
0 голосов
/ 31 января 2020

Я новичок в Kotlin и прочитал множество учебников, пробовал кучу кода, но все еще не могу понять, как создать папку во внутреннем хранилище.

Мне нужно создать папку, в которую я положу файл ресурса json.

Файл манифеста содержит <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> и <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Мой пример кода:

class MainActivity() : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val folder = File(
            Environment.getDataDirectory().toString() + separator.toString() + "MetroPol"
        )
        if (folder.exists()) {
            d("folder", "exists")
        } else {
            d("folder", "not exists")
            folder.mkdirs()
        }
    }

Я проверяю его, используя телефон, подключенный к ap c, и распознаю Android Студия. Когда это приложение запускает I go в браузере и не видит никакой новой папки.

Что здесь нужно сделать?

Ответы [ 3 ]

1 голос
/ 31 января 2020

Чтобы создать папку внутри вашего внутреннего хранилища, попробуйте этот фрагмент кода

val folder = filesDir
val f = File(folder, "folder_name")
f.mkdir()

Наконец, чтобы проверить, создана ли папка, откройте Обозреватель устройств в Android Studio, затем следуйте по пути

data-> data-> имя пакета вашего приложения -> files -> здесь должна быть папка, созданная вами программно. Надеюсь, это поможет

0 голосов
/ 31 января 2020

Можете ли вы попробовать это?

class MainActivity() : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var filename = "test.txt"
        val folder = File("/sdcard/MetroPol/")
        folder.mkdirs()
        val outputFile = File(folder, filename)
        try {
            val fos = FileOutputStream(outputFile)
        } catch (e: FileNotFoundException) {
            e.printStackTrace()
        }
    }
0 голосов
/ 31 января 2020

Я новичок в Kotlin и прочитал много учебников, пробовал кучу кода, но все еще не могу понять, как создать папку во внутреннем хранилище.

Кажется, что вы действительно хотите создать каталог во внешнем хранилище .

, так как он больше не поддерживается в Android 10 ( по умолчанию) и Android R + (для всех приложений), я рекомендую вам позволить пользователю создать каталог самостоятельно, и вы получите доступ к нему через ACTION_OPEN_DOCUMENT_TREE и Storage Access Framework.

Когда это приложение запускает I go в браузере и не видит никакой новой папки.

root внешнего хранилища - Environment.getExternalStorageDirectory().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...