Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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:无法将InputStream另存为文件_Android_Kotlin_Android File_Android Storage - Fatal编程技术网

Android Kotlin:无法将InputStream另存为文件

Android Kotlin:无法将InputStream另存为文件,android,kotlin,android-file,android-storage,Android,Kotlin,Android File,Android Storage,我正在使用Kotlin构建一个Android应用程序。在我的应用程序中,我试图将InputStream保存为文件。但它不起作用 这是将InputStream另存为文件的函数 fun copyStreamToFile(inputStream: InputStream) { var outputFile = File("testing-again.png") inputStream.use { input -> val

我正在使用Kotlin构建一个Android应用程序。在我的应用程序中,我试图将InputStream保存为文件。但它不起作用

这是将InputStream另存为文件的函数

fun copyStreamToFile(inputStream: InputStream) {
        var outputFile = File("testing-again.png")
        inputStream.use { input ->
            val outputStream = FileOutputStream(outputFile)
            outputStream.use { output ->
                val buffer = ByteArray(4 * 1024) // buffer size
                while (true) {
                    val byteCount = input.read(buffer)
                    if (byteCount < 0) break
                    output.write(buffer, 0, byteCount)
                }
                output.flush()
            }
        }
    }
fun copyreamtofile(inputStream:inputStream){
var outputFile=File(“再次测试.png”)
inputStream.use{input->
val outputStream=FileOutputStream(outputFile)
outputStream.use{output->
val buffer=ByteArray(4*1024)//缓冲区大小
while(true){
val byteCount=input.read(缓冲区)
如果(字节数<0)中断
写入(缓冲区,0,字节数)
}
output.flush()
}
}
}
它给了我以下的错误

Process: com.forkthecoop.com22222, PID: 16949
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=546, result=-1, data=Intent { dat=content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/31/ORIGINAL/NONE/image/jpeg/323542094 flg=0x1 clip={text/uri-list {...}} }} to activity {com.forkthecoop.com22222/com.forkthecoop.com22222.SendOrdinaryMessageActivity}: java.io.FileNotFoundException: testing-again.png: open failed: EROFS (Read-only file system)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5015)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.io.FileNotFoundException: testing-again.png: open failed: EROFS (Read-only file system)
        at libcore.io.IoBridge.open(IoBridge.java:492)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
        at com.forkthecoop.com22222.PartialMediaUploadPreview.copyStreamToFile(PartialMediaUploadPreview.kt:171)
        at com.forkthecoop.com22222.PartialMediaUploadPreview.handleOnActivityResult(PartialMediaUploadPreview.kt:146)
        at com.forkthecoop.com22222.SendOrdinaryMessageActivity.onActivityResult(SendOrdinaryMessageActivity.kt:208)
        at android.app.Activity.dispatchActivityResult(Activity.java:8310)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5008)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
     Caused by: android.system.ErrnoException: open failed: EROFS (Read-only file system)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7542)
        at libcore.io.IoBridge.open(IoBridge.java:478)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:236) 
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186) 
        at com.forkthecoop.com22222.PartialMediaUploadPreview.copyStreamToFile(PartialMediaUploadPreview.kt:171) 
        at com.forkthecoop.com22222.PartialMediaUploadPreview.handleOnActivityResult(PartialMediaUploadPreview.kt:146) 
        at com.forkthecoop.com22222.SendOrdinaryMessageActivity.onActivityResult(SendOrdinaryMessageActivity.kt:208) 
        at android.app.Activity.dispatchActivityResult(Activity.java:8310) 
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5008) 
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056) 
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
2021-03-14 15:56:54.505 518-2903/system_process E/WifiThreadRunner: WifiThreadRunner.call() timed out!
    java.lang.Throwable: Stack trace:
        at com.android.server.wifi.WifiThreadRunner.call(WifiThreadRunner.java:80)
        at com.android.server.wifi.WifiServiceImpl.startScan(WifiServiceImpl.java:497)
        at android.net.wifi.IWifiManager$Stub.onTransact(IWifiManager.java:718)
        at android.os.Binder.execTransactInternal(Binder.java:1159)
        at android.os.Binder.execTransact(Binder.java:1123)
Process:com.forkthecoop.com22222,PID:16949
java.lang.RuntimeException:未能传递结果ResultInfo{who=null,request=546,result=-1,data=Intent{dat=content://com.google.android.apps.photos.contentprovider/-1/1/content://media/external/images/media/31/ORIGINAL/NONE/image/jpeg/323542094 flg=0x1 clip={text/uri列表{…}}到活动{com.forktechoop.com2222/com.forktechoop.com2222.SendOrdinaryMessageActivity}:java.io.FileNotFoundException:testing-Reach.png:open失败:EROFS(只读文件系统)
位于android.app.ActivityThread.deliverResults(ActivityThread.java:5015)
位于android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)
在android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:223)
位于android.app.ActivityThread.main(ActivityThread.java:7656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
原因:java.io.FileNotFoundException:testing-reach.png:open失败:EROFS(只读文件系统)
在libcore.io.IoBridge.open中(IoBridge.java:492)
位于java.io.FileOutputStream。(FileOutputStream.java:236)
位于java.io.FileOutputStream。(FileOutputStream.java:186)
在com.forkthecoop.com2222.PartialMediaUploadPreview.copyStreamToFile(PartialMediaUploadPreview.kt:171)
com.forkthecoop.com2222.partialmediauploadview.handleOnActivityResult(partialmediauploadview.kt:146)
在com.forkthecoop.com2222.SendOrdinaryMessageActivity.onActivityResult(SendOrdinaryMessageActivity.kt:208)上
位于android.app.Activity.dispatchActivityResult(Activity.java:8310)
位于android.app.ActivityThread.deliverResults(ActivityThread.java:5008)
位于android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)
在android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:223)
位于android.app.ActivityThread.main(ActivityThread.java:7656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
原因:android.system.ErrnoException:打开失败:EROFS(只读文件系统)
在libcore.io.Linux.open上(本机方法)
在libcore.io.ForwardingOs.open中(ForwardingOs.java:166)
在libcore.io.BlockGuardOs.open上(BlockGuardOs.java:254)
在libcore.io.ForwardingOs.open中(ForwardingOs.java:166)
在android.app.ActivityThread$AndroidOs.open上(ActivityThread.java:7542)
在libcore.io.IoBridge.open中(IoBridge.java:478)
位于java.io.FileOutputStream。(FileOutputStream.java:236)
位于java.io.FileOutputStream。(FileOutputStream.java:186)
在com.forkthecoop.com2222.PartialMediaUploadPreview.copyStreamToFile(PartialMediaUploadPreview.kt:171)
com.forkthecoop.com2222.partialmediauploadview.handleOnActivityResult(partialmediauploadview.kt:146)
在com.forkthecoop.com2222.SendOrdinaryMessageActivity.onActivityResult(SendOrdinaryMessageActivity.kt:208)上
位于android.app.Activity.dispatchActivityResult(Activity.java:8310)
位于android.app.ActivityThread.deliverResults(ActivityThread.java:5008)
位于android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)
在android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:223)
位于android.app.ActivityThread.main(ActivityThread.java:7656)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
在com.android.internal.o
fun copyStreamToFile(inputStream: InputStream) {
    val storeDirectory = this.getExternalFilesDir(Environment.DIRECTORY_DCIM) // DCIM folder
    val outputFile = File(storeDirectory, "testing-again.png")
    inputStream.use { input ->
        val outputStream = FileOutputStream(outputFile)
        outputStream.use { output ->
            val buffer = ByteArray(4 * 1024) // buffer size
            while (true) {
                val byteCount = input.read(buffer)
                if (byteCount < 0) break
                output.write(buffer, 0, byteCount)
            }
            output.flush()
        }
    }
}