我让用户从SD卡选择要上传到服务器并在onActivityResult
中将返回给我的Uri
保存下来。
例如:
file:///storage/emulated/0/Download/menu-4.27.13.pdf
当我尝试将它转换为字节数组以发送到服务器时,我遇到了FileNotFoundException
。
if(!fileURI.equals("")){
File pdf = new File(fileURI);
try
{
FileInputStream fin = new FileInputStream(pdf);
byte fileContent[] = new byte[(int)pdf.length()];
fin.read(fileContent);
fin.close();
String pdfString = Base64.encode(fileContent);
sb.append(pdfString);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
堆栈跟踪
11-04 11:57:30.597: W/System.err(13531): java.io.FileNotFoundException: /file:/storage/emulated/0/Download/menu-4.27.13.pdf: open failed: ENOENT (No such file or directory)
11-04 11:57:30.597: W/System.err(13531): at libcore.io.IoBridge.open(IoBridge.java:409)
11-04 11:57:30.607: W/System.err(13531): at java.io.FileInputStream.<init>(FileInputStream.java:78)
11-04 11:57:30.607: W/System.err(13531): at com.ecm2.mobilemap.services.MessageService.getModifiedElements(MessageService.java:2755)
11-04 11:57:30.617: W/System.err(13531): at com.ecm2.mobilemap.services.MessageService.callSync(MessageService.java:2433)
11-04 11:57:30.617: W/System.err(13531): at com.ecm2.mobilemap.services.MessageService.onHandleIntent(MessageService.java:190)
11-04 11:57:30.627: W/System.err(13531): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
11-04 11:57:30.627: W/System.err(13531): at android.os.Handler.dispatchMessage(Handler.java:99)
11-04 11:57:30.637: W/System.err(13531): at android.os.Looper.loop(Looper.java:137)
11-04 11:57:30.637: W/System.err(13531): at android.os.HandlerThread.run(HandlerThread.java:61)
11-04 11:57:30.637: W/System.err(13531): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
11-04 11:57:30.647: W/System.err(13531): at libcore.io.Posix.open(Native Method)
11-04 11:57:30.657: W/System.err(13531): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
11-04 11:57:30.657: W/System.err(13531): at libcore.io.IoBridge.open(IoBridge.java:393)
这不是当初始化File
对象时返回的字符串吗?为什么我在拥有用户选择文件返回的Uri
时会出现FileNotFoundException
错误?