Android Kotlin:如何创建/附加文件(和共享)
我的应用程序中有一个数据数组列表,我现在想将其写入csv文件,并使用第三方应用程序(如电子邮件)共享此csv文件。在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 =
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后要使用哪个函数。