EBADF (Bad file number) auf inputstream I/O

Habe ich diesen Fehler

java.io.IOException: Lesen fehlgeschlagen: EBADF (Bad file number)

auf dieser code-Zeile:

 while ((input = fis.read(buffer)) != -1) {

Was denken Sie, würde dies dazu führen, EBADF bad file number Fehler in dieser Zeile? Irgendwelche Ideen auf, wie man es beheben. Ich wollte nur einen funktionierenden stream zu Lesen in der PDF-Datei von der SD Lesen und setzen wieder auf die SD-Karte wieder mit einem anderen Namen.

Stack-trace

07-15 18:47:38.952: W/System.err(2220): java.io.IOException: read failed: EBADF (Bad file number)
07-15 18:47:38.962: W/System.err(2220): at libcore.io.IoBridge.read(IoBridge.java:432)
07-15 18:47:38.962: W/System.err(2220): at Java.io.FileInputStream.read(FileInputStream.java:179)
07-15 18:47:38.962: W/System.err(2220):     at java.io.InputStream.read(InputStream.java:163)
07-15 18:47:38.962: W/System.err(2220):     at com.example.fileionottext.MainActivity.pdfInAndOut(MainActivity.java:95)
07-15 18:47:38.962: W/System.err(2220):     at com.example.fileionottext.MainActivity$1.onClick(MainActivity.java:47)
07-15 18:47:38.962: W/System.err(2220):     at android.view.View.performClick(View.java:3531)
07-15 18:47:38.962: W/System.err(2220):     at android.view.View$PerformClick.run(View.java:14224)
07-15 18:47:38.962: W/System.err(2220):     at android.os.Handler.handleCallback(Handler.java:605)
07-15 18:47:38.962: W/System.err(2220):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-15 18:47:38.962: W/System.err(2220):     at android.os.Looper.loop(Looper.java:137)
07-15 18:47:38.962: W/System.err(2220):     at android.app.ActivityThread.main(ActivityThread.java:4699)
07-15 18:47:38.962: W/System.err(2220):     at java.lang.reflect.Method.invokeNative(Native Method)
07-15 18:47:38.962: W/System.err(2220):     at java.lang.reflect.Method.invoke(Method.java:511)
07-15 18:47:38.962: W/System.err(2220):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)

Den rest des Codes

        public void pdfInAndOut() throws FileNotFoundException, IOException
        {
            try {
                FileOutputStream fos = null;
                File file2;

                file2 = new File("/mnt/sdcard/replacementPdf.pdf");

                //String fileName = "testerPDFCopy.pdf";
                try {
                    if (!file2.exists()) {
                        file2.createNewFile();
                    }
                    fos = new FileOutputStream(file2);
                }
                catch (Exception e1) {
                    //TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                FileInputStream fis = null;
                byte[] buffer = new byte[888192];

                File fileIn;
                fileIn = new File("/mnt/sdcard/tempPdf.pdf");

                fis = new FileInputStream(fileIn);

                int input = 0;

                while ((input = fis.read(buffer)) != -1) { //<<-- STACK TRACE ERROR
                    fos.write(buffer, 0, input);
                    Log.i("<<<<<>>>>", "fos2 is is; " + buffer[7]);
                    try {
                        fos.flush();
                        fos.close();
                        fis.close();
                    }
                    catch (IOException e) {
                        //TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            textViewOne.setText(String.valueOf(input));
        }
        catch (Exception e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Wahrscheinlich im Zusammenhang: stackoverflow.com/questions/14584755/...
Sie schon gepostet, mehr oder weniger die gleiche Frage vor ein paar Tagen - stackoverflow.com/questions/17525255/...
ich machte änderungen am code und es immer noch nicht funktionieren, so wollte ich sehen, ob ich bekommen konnte jedes neue feedback auf diesen code, ich dachte, das war über eine Woche her
NIE verwenden hardcoded filepaths. Müssen Sie Environment.getExternalStorageDirectory() statt.
flush() vor close() redundant ist.

InformationsquelleAutor Kevik | 2013-07-15

Schreibe einen Kommentar