ZipFile Kotlin класс возвращает java.io.FileNotFoundException: файл не существует - PullRequest
0 голосов

Я учусь работать с zip-файлами в Kotlin. Теоретически мое приложение должно читать файлы из zip и извлекать их при необходимости. Для этой задачи я использую java.util.zip.ZipFile, но когда я передаю выбранный файл, приложение вылетает, говоря, что файл не существует.

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

        val intent = Intent()
            .setType("*/*")
            .setAction(Intent.ACTION_GET_CONTENT)

        startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == 111 && resultCode == RESULT_OK) {
            val selectedFile = data?.data

            var file = File(selectedFile!!.path)
            var zipFile = ZipFile(file)
        }
    }

java.io.FileNotFoundException: файл не существует: / document / acc = 1; doc = 155

1 Ответ

0 голосов
/ 09 июля 2019

ZipFile работает только с файлами, а результатом ACTION_GET_CONTENT является Uri, из которого обычно не можно получить файл (см. Как использовать контент из Uri для подробного объяснения).

Есть два решения:

  • Используйте ZipInputStream, который может извлекать содержимое потока.

  • Скопируйте поток из Uri в локальный файл, затем откройте его с помощью ZipFile

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