如何使用Kotlin从路径读取json文件

时间:2019-04-29 17:29:46

标签: android json kotlin

我正在尝试在android中打开文件选择器,选择一个json文件,然后从中获取文本。 我选择文件后,该应用程序崩溃,因为它找不到路径。

我尝试添加外部存储的读/写权限并更改路径格式

acos((trace(R)-1)/2)*180/pi

2 个答案:

答案 0 :(得分:2)

  

我正在尝试在android中打开文件选择器

那不是文件选择器。这样一来,用户就可以选择一条内容,该内容可以是文件,也可以不是文件。

  

我选择文件后,应用程序崩溃了

您没有选择文件。您正在挑选内容。该内容由Uri标识,并且您的Uri的方案是content,而不是file

使用ContentResolveropenInputStream()InputStream所标识的内容上获得Uri。您可以在该readText()上调用InputStream以将其作为文本阅读。

答案 1 :(得分:0)

这是我最终的工作代码:

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

        val path = data?.data
        val jsonSelectedFile =  contentResolver.openInputStream(path);
        val inputAsString = jsonSelectedFile.bufferedReader().use { it.readText() }

        Toast.makeText(this, "Json: " +  inputAsString , Toast.LENGTH_LONG).show()
    }

并致电:

 importJsonButton.setOnClickListener {
            val myFileIntent = Intent()
                .setType("*/*")
                .setAction(Intent.ACTION_GET_CONTENT)

            startActivityForResult(myFileIntent,10)
        }