Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin:如何创建/附加文件(和共享)_Android_Android Studio_Kotlin_File Io - Fatal编程技术网

Android Kotlin:如何创建/附加文件(和共享)

Android Kotlin:如何创建/附加文件(和共享),android,android-studio,kotlin,file-io,Android,Android Studio,Kotlin,File Io,我的应用程序中有一个数据数组列表,我现在想将其写入csv文件,并使用第三方应用程序(如电子邮件)共享此csv文件。在Kotlin中,我没有找到任何有助于创建、查找文件路径和附加到文件的资源。有没有人有这方面的经验或有例子可以说明?刚开始,我正在尝试写入头文件并关闭文件,这样我就可以看到它正在正确写入 这就是我现在所拥有的: val HEADER = "ID, time, PSI1, PSI2, PSI3, speed1, speed2, temp1, temp2" val filename =

我的应用程序中有一个数据数组列表,我现在想将其写入csv文件,并使用第三方应用程序(如电子邮件)共享此csv文件。在Kotlin中,我没有找到任何有助于创建、查找文件路径和附加到文件的资源。有没有人有这方面的经验或有例子可以说明?刚开始,我正在尝试写入头文件并关闭文件,这样我就可以看到它正在正确写入

这就是我现在所拥有的:

val HEADER = "ID, time, PSI1, PSI2, PSI3, speed1, speed2, temp1, temp2"
val filename = "export.csv"

var fileOutStream : FileOutputStream = openFileOutput(filename,Context.MODE_PRIVATE)

try {
    fileOutStream.write(HEADER.toByteArray())
    fileOutStream.close()
}catch(e: Exception){
    Log.i("TAG", e.toString())
}
它不会抛出异常,但我在文件系统中找不到该文件。我正在使用物理平板电脑进行测试/调试。我已经查过了。。。。我的应用程序的文件夹。

openFileOutput创建一个私有文件,可能位于应用程序存储中。默认情况下,这些文件不可浏览。如果要创建可浏览到的文件,则需要具有“写入外部存储”权限,并希望将文件创建到由getExternalFilesDir提供的目录中。openFileOutput创建一个私有文件,可能位于应用程序存储中。默认情况下,这些文件不可浏览。如果要创建可浏览到的文件,则需要“写入外部”存储权限,并希望将文件创建到getExternalFilesDir提供的目录中

我在文件系统中找不到该文件

使用Android Studio的设备文件资源管理器,查看/data/data/../files/,其中。。。是您的应用程序ID

此外,您可以更简洁地编写代码,如下所示:

try {
    PrintWriter(openFileOutput(filename,Context.MODE_PRIVATE)).use {
        it.println(HEADER)
    }
} catch(e: Exception) {
    Log.e("TAG", e.toString())
}
use将自动关闭PrintWriter,PrintWriter为您提供了一个更自然的编写文本的API

我在文件系统中找不到该文件

使用Android Studio的设备文件资源管理器,查看/data/data/../files/,其中。。。是您的应用程序ID

此外,您可以更简洁地编写代码,如下所示:

try {
    PrintWriter(openFileOutput(filename,Context.MODE_PRIVATE)).use {
        it.println(HEADER)
    }
} catch(e: Exception) {
    Log.e("TAG", e.toString())
}

use将自动关闭PrintWriter,PrintWriter为您提供了更自然的用于编写文本的API。

根据您开发的最低API版本,似乎有许多方法可以创建文件并附加到其中。我使用的是最低限度的Android API 22。创建/追加文件的代码如下:

val HEADER = "DATE,NAME,AMOUNT_DUE,AMOUNT_PAID"

var filename = "export.csv"

var path = getExternalFilesDir(null)   //get file directory for this package 
                                       //(Android/data/.../files | ... is your app package)

//create fileOut object
var fileOut = File(path, filename)

//delete any file object with path and filename that already exists
fileOut.delete()

//create a new file
fileOut.createNewFile()

//append the header and a newline
fileOut.appendText(HEADER)
fileOut.appendText("\n")


/*
    write other data to file 
*/



根据您开发的最低API版本,似乎有许多方法可以创建文件并附加到其中。我使用的是最低限度的Android API 22。创建/追加文件的代码如下:

val HEADER = "DATE,NAME,AMOUNT_DUE,AMOUNT_PAID"

var filename = "export.csv"

var path = getExternalFilesDir(null)   //get file directory for this package 
                                       //(Android/data/.../files | ... is your app package)

//create fileOut object
var fileOut = File(path, filename)

//delete any file object with path and filename that already exists
fileOut.delete()

//create a new file
fileOut.createNewFile()

//append the header and a newline
fileOut.appendText(HEADER)
fileOut.appendText("\n")


/*
    write other data to file 
*/



您能演示如何使用getExternalFilesDir吗?Android Dev说它返回一个文件[],其中包含我的应用程序可以创建持久文件的绝对路径。不确定文件[]是什么,或者如何与其他函数一起使用。或者,调用getExternalFilesDir后要使用哪个函数。您能演示如何使用getExternalFilesDir吗?Android Dev说它返回一个文件[],其中包含我的应用程序可以创建持久文件的绝对路径。不确定文件[]是什么,或者如何与其他函数一起使用。或者,调用getExternalFilesDir后要使用哪个函数。