2014-06-25 45 views
2

我特林從我的DCIM文件夾加載.png文件,但它拋出ExecptionAndroid的位圖FileNotFoundException異常ENOENT而如果文件存在

06-25 14:03:09.350: E/BitmapFactory(12552): Unable to decode stream: java.io.FileNotFoundException: /[email protected]: open failed: ENOENT (No such file or directory) 

我擁有這些權限在我的清單中添加方法只叫:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

,我調用這個方法來加載文件:

public static Bitmap getPreview(File parentDir){ 
    Bitmap toReturn=null; 
    File file = new File(parentDir,"preview.png"); 

    if (file.exists()) { 
     file.getParentFile().mkdirs(); 
     toReturn=BitmapFactory.decodeFile(file.getAbsolutePath()); 

    } 
    return toReturn; 

} 

文件不EXIS噸,當我顯示的完整路徑是

06-25 14:03:09.100: I/(12552): /storage/emulated/0/DCIM/TextureVisualiser/SetA/preview.png 

我知道我可以從這個路徑加載TEXTFILES:

06-25 14:03:09.110: I/(12552): /storage/emulated/0/DCIM/TextureVisualiser/SetA/info.txt 

爲txt文件,我得到的方法:

public static String[] readTitleAndSubtitle(File parentDir){ 
    String[] toReturn = new String[2]; 
    File file = new File(parentDir,"info.txt"); 
    Log.i("",""+file); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     toReturn[0]=br.readLine(); 
     toReturn[1]=br.readLine(); 
     br.close(); 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 

    return toReturn; 
} 

所以基本上我在文件夾中有一個.txt文件和一個.png文件,只有txt文件可以加載。 png文件引發異常。

編輯: 我試圖將其移動到其他lokation,但仍然無法讀取.png文件,但我可以讀取.txt文件。

Thx提前,

Lightbringa

+0

爲什麼要創建一個使用IF(file.exists新目錄() ){file.getParentFile()。mkdirs(); ? – Opiatefuchs

+0

沒有android.permission.READ_INTERNAL_STORAGE這樣的android權限,或者android.permission.WRITE_INTERNAL_STORAGE – Sipka

+0

我在沒有mkdirs()的情況下嘗試了它,但它沒有改變任何東西。早些時候,我看到一個建議,告訴我應該嘗試一下。 – user3730107

回答

0

找到了解決辦法。

我用過這東西對於一個ListView,我試圖通過

View v = dataAdapter.getView(0,null,null); 
    ImageView iv =(ImageView) v.findViewById(R.id.Image); 
    iv.setImageBitmap(DataHelper.getPreview(allDirects.get(0))); 

中把握想要的看法,但它不工作是這樣的:d

所以我建立我自己的BaseAdapter。對於所有那些誰不知道我是怎麼做的這裏是滿級:

package de.bachelorarbeit.main; 

import java.io.File; 
import java.util.List; 
import de.bachelorarbeit.R; 
import de.bachelorarbeit.helper.DataHelper; 
import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomList extends BaseAdapter { 
    private final Activity context; 
    private final List<File> allDirects; 

    public CustomList(Activity context,List<File> allDirects) { 
     this.context = context; 
     this.allDirects=allDirects; 
} 

@Override 
public View getView(int position, View view, ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.item, null, true); 
    TextView txtTitle = (TextView) rowView.findViewById(R.id.Title); 
    TextView subTitle = (TextView) rowView.findViewById(R.id.SubTitle); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.Image); 


    String[] both = DataHelper.readTitleAndSubtitle(allDirects.get(position));  
    txtTitle.setText(both[0]); 
    subTitle.setText(both[1]); 
    imageView.setImageBitmap(DataHelper.getPreview(allDirects.get(position))); 
    return rowView; 
} 

@Override 
public int getCount() { 
    return allDirects.size(); 
} 

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 
} 

感謝每個幫助我, Lightbringa

-1

改成這樣:

if (!file.exists()) { 
     file.getParentFile().mkdirs(); 

    } 


toReturn=BitmapFactory.decodeFile(file.getAbsolutePath()); 
+0

沒有改變一件事情:( – user3730107

相關問題