Digvijay
Digvijay

Reputation: 3271

Unable to save file in internal directory

I a trying to create folder in internal storage in android and want to add files in that folder but app is crashing below is logcat:

11-29 19:40:02.241 23675-23675/com.app.papers E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.papers, PID: 23675
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
 Caused by: java.io.FileNotFoundException: /storage/emulated/0/Papers: open failed: EISDIR (Is a directory)
    at libcore.io.IoBridge.open(IoBridge.java:452)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:72)
    at com.app.papers.PickImage$b.onClick(SourceFile:81)
    at android.view.View.performClick(View.java:5716)
    at android.widget.TextView.performClick(TextView.java:10926)
    at android.view.View$PerformClick.run(View.java:22596)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:7325)
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
 Caused by: android.system.ErrnoException: open failed: EISDIR (Is a directory)
    at libcore.io.Posix.open(Native Method)
    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
    at libcore.io.IoBridge.open(IoBridge.java:438)

Below is my code:

   val document: PdfDocument = PdfDocument()
        val pageInfo: PdfDocument.PageInfo? = bitmap?.width?.let { it1 ->
            bitmap?.height?.let { it2 ->
                PdfDocument.PageInfo.Builder(
                    it1,
                    it2, 1).create()
            }
        }
        val page: PdfDocument.Page  = document.startPage(pageInfo)

        val canvas: Canvas = page.canvas
        bitmap?.let { it1 -> canvas.drawBitmap(it1, 0f, 0f, null) }
        document.finishPage(page)

        val mediaStorageDir = File(Environment.getExternalStorageDirectory(), "Papers")

        if (mediaStorageDir.exists()) {
            document.writeTo( FileOutputStream(mediaStorageDir))
            document.close()
        } 

What I am doing wrong?

Upvotes: 3

Views: 787

Answers (1)

CommonsWare
CommonsWare

Reputation: 1006614

I a trying to create folder in internal storage in android

FWIW, your code is set up for external storage.

Someone please let me know what I am doing wrong any help would be appreciated.

Papers/ appears to exist and is a directory. writeTo() takes a file, not a directory. Try something like:

        val mediaStorageDir = File(Environment.getExternalStorageDirectory(), "Papers")

        if (mediaStorageDir.exists()) {
            val pdfFile = File(mediaStorageDir, "something.pdf")

            document.writeTo( FileOutputStream(pdfFile))
            document.close()
        } 

Upvotes: 2

Related Questions