![](/img/trans.png)
[英]Android - java.io.FileNotFoundException open failed: ENOENT (No such file or directory)
[英]java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
不知道我到底在做什么錯,但是在嘗試將位圖保存到png文件時不斷出現此錯誤:
java.io.FileNotFoundException:/storage/emulated/0/storage/emulated/0/Pictures/HelloCamera/VID_20150806_124818.png:打開失敗:ENOENT(無此類文件或目錄)
private File getVideoThumb(String mediaPath, Uri videoUri) {
Bitmap bmThumbnail;
bmThumbnail = ThumbnailUtils.createVideoThumbnail(mediaPath, MediaStore.Video.Thumbnails.MINI_KIND);
File fPath = Environment.getExternalStorageDirectory();
String[] tokens = mediaPath.split("\\.(?=[^\\.]+$)");
File f = null;
f = new File(fPath, tokens[0] + ".png");
FileOutputStream out = null;
try {
out = new FileOutputStream(f);
bmThumbnail.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance
// PNG is a lossless format, the compression factor (100) is ignored
} catch (Exception e) {
Log.d(Constants.DEBUG, "ERROR saving the compressed bitmap " + e);
e.printStackTrace();
} finally {
try {
if (out != null) {
out.flush();
out.close();
}
} catch (IOException e) {
Log.d(Constants.DEBUG, "ERROR closing out stream for file for bitmap");
e.printStackTrace();
}
}
return f;
}
似乎指出該錯誤是目錄/storage/emulated/0/
的重復
我如何從中取出第二個正則表達式我嘗試了這個:
int index = mediaPath.lastIndexOf("\\");
String fileName = mediaPath.substring(index + 1);
String[] tokens = fileName.split("\\.(?=[^\\.]+$)");
如果你試試:
File f = null;
f = new File(mediaPath);
System.out.println(f.getName().split("\\.")[0] + ".png");
您將獲得所需的最后一個令牌。
Input: /storage/emulated/0/Pictures/HelloCamera/VID_20150806_131011.mp4
Output: VID_20150806_131011.png
我最終將fileName傳遞給getVideoThumb,謝謝@fhissen使我知道重復的路徑...代碼現在看起來像這樣...
private File getVideoThumb(String mediaPath, String mediaName, Uri videoUri) {
Bitmap bmThumbnail;
//MINI 512x334
bmThumbnail = ThumbnailUtils.createVideoThumbnail(mediaPath, MediaStore.Video.Thumbnails.MINI_KIND);
File fPath = Environment.getExternalStorageDirectory();
String[] tokens = mediaName.split("\\.(?=[^\\.]+$)");
File f = null;
f = new File(fPath, tokens[0] +".png");
FileOutputStream out = null;
try {
out = new FileOutputStream(f);
bmThumbnail.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance
// PNG is a lossless format, the compression factor (100) is ignored
} catch (Exception e) {
Log.d(Constants.DEBUG, "ERROR saving the compressed bitmap " + e);
e.printStackTrace();
} finally {
try {
if (out != null) {
out.flush();
out.close();
}
} catch (IOException e) {
Log.d(Constants.DEBUG, "ERROR closing out stream for file for bitmap");
e.printStackTrace();
}
}
return f;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.