【问题标题】:How to save data in internal or external directory?如何将数据保存在内部或外部目录中?
【发布时间】:2020-09-14 13:05:47
【问题描述】:

java.io.IOException: 没有这样的文件或目录

我想将传感器数据保存在 .csv 数据中,但我总是收到此错误。谁能帮忙???

 fun onStop(view: View){

    sensorManager.unregisterListener(this)
    val fileName = "Accelerometer $time.csv"
    var data = _accelerometerStringBuilder.toString()

  
   
    var fileWriter: FileWriter? = null

    var myExFile = File(getExternalFilesDir("/storage/emulated/0"),fileName)
    File.createTempFile("Accelerometer $time", "csv", myExFile)

    fileWriter = FileWriter(fileName)
    fileWriter.appendLine(CSV_HEADER)
    fileWriter.appendLine(data)
    fileWriter.close()


    var myExternalFile2:File = File(getExternalFilesDir("/storage/emulated/0"),"Gyroscope $time.csv")
    File.createTempFile("Gyroscope $time", "csv", myExternalFile2)

    fileWriter = FileWriter("Gyroscope $time.csv")
    fileWriter.appendLine(CSV_HEADER)
    fileWriter.appendLine(_gyroscopeStringBuilder.toString())
    fileWriter.close()


}

【问题讨论】:

  • java.io.IOException: No such file or Directory 错误消息。这是关于哪个文件或目录?请告诉完整路径。

标签: android android-studio kotlin android-sensors


【解决方案1】:

试试这个:

fun onStop(view: View) {
        sensorManager.unregisterListener(this)
        val fileAcc = File(PathUtils.getExternalAppFilesPath(),"Accelerometer $time.csv")
        FileIOUtils.writeFileFromString(fileAcc,_accelerometerStringBuilder.toString(),true)
        FileIOUtils.writeFileFromString(fileAcc,CSV_HEADER,true)

        val fileGyro = File(PathUtils.getExternalAppFilesPath(),"Gyroscope $time.csv")
        FileIOUtils.writeFileFromString(fileGyro,_gyroscopeStringBuilder.toString(),true)
        FileIOUtils.writeFileFromString(fileGyro,CSV_HEADER,true)
    }

这个库让事情变得更简单:implementation 'com.blankj:utilcodex:1.29.0'

权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

为确保文件创建成功,请转到您的手机 > 文件管理器应用程序 > 搜索栏 > 搜索 time.csv,您将在那里看到创建的文件

【讨论】:

  • 我有权限,问题是,getExternal AppFilesPath() 无法从库中导入。
  • PathUtils.getExternalAppFilesPath() 来自implementation 'com.blankj:utilcodex:1.29.0' 库确保正确导入
  • 我做到了。还有图书馆在那里,因为我可以导入 PathUtils 和 FileIOUtils。只是 getExternalAppfilesPath() 不起作用,虽然在我的导入库路径中有
  • 谢谢 Mouaad,现在可以使用了。你也知道 String.format 吗?
  • 数字显示为 0.034.234.234.234 ,第一个“.”对我来说应该是“,”,但我没有看到任何格式化它的模型。
猜你喜欢
  • 1970-01-01
  • 2018-04-20
  • 2019-01-06
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多