java.io.IOException:写入失败:EPIPE(断管)

时间:2014-04-07 08:27:13

标签: java android io ipc

您好我在通过两个parcelFileDescriptors

之间的管道发送数据时收到此错误
java.io.IOException: write failed: EPIPE (Broken pipe)
            at libcore.io.IoBridge.write(IoBridge.java:455)
            at java.io.FileOutputStream.write(FileOutputStream.java:187)
            at com.google.common.io.ByteStreams.copy(ByteStreams.java:179)
            at cz.simekadam.android.securedfileprovider.SecuredFileProvider$Pipe.run(SecuredFileProvider.java:161)
Caused by: libcore.io.ErrnoException: write failed: EPIPE (Broken pipe)
            at libcore.io.Posix.writeBytes(Native Method)
            at libcore.io.Posix.write(Posix.java:202)
            at libcore.io.BlockGuardOs.write(BlockGuardOs.java:197)
            at libcore.io.IoBridge.write(IoBridge.java:450)
            at java.io.FileOutputStream.write(FileOutputStream.java:187)
            at com.google.common.io.ByteStreams.copy(ByteStreams.java:179)
            at cz.simekadam.android.securedfileprovider.SecuredFileProvider$Pipe.run(SecuredFileProvider.java:161)    

这就是我复制数据的方式。

static class PipeThread extends Thread {
    InputStream input;
    OutputStream out;

    PipeThread(InputStream inputStream, OutputStream out) {
        this.input=inputStream;
        this.out=out;
    }

    @Override
    public void run() {

        try {
            ByteStreams.copy(input, out);
            input.close();
            out.close();
        } catch (IOException e) {
            Log.e(getClass().getSimpleName(),
                "Exception transferring file", e);
        }

    }
}

我发现this questions表示可能与缺少root权限有关。我认为这不是我的问题,因为我没有写任何文件夹。示例用例是将我的contentProvider中的图像文件共享到像Skithch这样的应用程序。最重要的是有一件事让我发疯。这个过程成功完成,这意味着共享图像在skitch中打开没有任何问题。我我只是在我的控制台中看到这个,我有点意识到它......我猜它不应该在那里:)

编辑:我已经进一步测试了它,当其他应用程序从我的ContentProvider中读取时,它似乎只是可重现的。只有这样才会抛出异常。

0 个答案:

没有答案