gpt4 book ai didi

android - 输入流 I/O 上的 EBADF(错误文件编号)

转载 作者:太空狗 更新时间:2023-10-29 12:46:35 25 4
gpt4 key购买 nike

我有这个错误

java.io.IOException: read failed: EBADF (Bad file number)

在这行代码中:

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

您认为什么会导致此行出现此 EBADF 错误文件号错误?关于如何修复它的任何想法。我只是想要一个工作流来读取 SD 中的 PDF 文件,然后以不同的名称再次读取放回 SD 卡。

堆栈跟踪

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)

剩下的代码

        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();
}
}
}

最佳答案

while ((input = fis.read(buffer)) != -1) { // <<-- STACK TRACE ERROR
fos.write(buffer, 0, input);

要么必须是 ,对吧?否则会执行fis.close,报错。

Log.i("<<<<<>>>>", "fos2 is is; " + buffer[7]);

try {
fos.flush();
fos.close();
fis.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

关于android - 输入流 I/O 上的 EBADF(错误文件编号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17651416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com