最近开发中发现图片文件使用File.createNewFile保存出现了问题,网上苦苦找了很多资料,最终看到此文章关于Android file.createNewFile() 方法出现的问题总结,得以解决,非常感谢 此文章只做记录,如原创方有要求,将立即删除。
这种问题可能是各家手机厂商定制造成的,我用的测试机都没有出现这种创建异常的情况,新出来的Vivo、OPPO有这种情况,以下是修改后的代码块:
File.createNewFile()方法需要在创建文件目录之后才能成功,否则会报No such file的错误,最终造成文件空指针String storageDir = null; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES).getAbsolutePath()+"/axin/image/"; }else{ storageDir = App.getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath()+"/image/"; } //使用createTempFile方式必须先创建目录,否则会出现No such file .. File dir=new File(storageDir); if(!dir.exists()){ dir.mkdirs(); } File image = null; LogUtils.d("create before-->"+(dir.getAbsolutePath())); try { image = File.createTempFile( getDeafultFileName(), /* prefix */ ".jpg", /* suffix */ dir /* directory */ ); } catch (IOException e) { e.printStackTrace(); } LogUtils.d("create after-->"+(image==null?"null":image.getAbsolutePath()));