尝试使用 Kotlin 创建 pdf 文件。获取“java.io.FileNotFoundException:20210922:打开失败:EROFS(只读文件系统)”错误/
Posted
技术标签:
【中文标题】尝试使用 Kotlin 创建 pdf 文件。获取“java.io.FileNotFoundException:20210922:打开失败:EROFS(只读文件系统)”错误/【英文标题】:Trying to create a pdf file with Kotlin. Getting "java.io.FileNotFoundException: 20210922: open failed: EROFS (Read-only file system)" error/ 【发布时间】:2021-11-15 13:57:51 【问题描述】:尝试在 android studio 中使用 Kotlin 创建一个 pdf 文件。出现“java.io.FileNotFoundException: 20210922: open failed: EROFS (Read-only file system)”错误/
我的功能是:
private fun savePDF()
val mDoc = Document()
val mFileName = SimpleDateFormat("yyyyMMdd", Locale.getDefault()).format(System.currentTimeMillis())
val mFilePath = Environment.DIRECTORY_DOWNLOADS.toString() + "/" + mFileName + ".pdf"
try
PdfWriter.getInstance(mDoc, FileOutputStream(mFileName))
mDoc.open()
val chno1 = findViewById<EditText>(R.id.chno1)
val data = chno1.toString().trim()
mDoc.addAuthor("XYZ")
mDoc.add(Paragraph(data))
mDoc.close()
Toast.makeText(this, "$mFileName.pdf \n is create to \n$mFilePath",Toast.LENGTH_SHORT).show()
catch (e: Exception)
Toast.makeText(this,""+e.toString(),Toast.LENGTH_LONG).show()
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
)
when(requestCode)
STORAGE_CODE ->
if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
savePDF()
else
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
【问题讨论】:
请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:乍一看,唯一可能发生EROFS (Read-only file system)
错误的代码是FileOutputStream(mFileName)
中的实例化
PdfWriter.getInstance(mDoc, FileOutputStream(mFileName))
因此,您的应用程序的当前工作目录显然位于一个只读文件系统上。
不过,也许您实际上并不想在当前工作目录中创建该文件,而是在mFilePath
中使用的下载位置创建该文件。在这种情况下使用mFilePath
而不是mFileName
,即
PdfWriter.getInstance(mDoc, FileOutputStream(mFilePath))
【讨论】:
以上是关于尝试使用 Kotlin 创建 pdf 文件。获取“java.io.FileNotFoundException:20210922:打开失败:EROFS(只读文件系统)”错误/的主要内容,如果未能解决你的问题,请参考以下文章
使用 kotlin for android app 将 pdf 文件上传到 firebase 存储