2013-07-16 42 views
1

嘗試從資產目錄加載文件以便將其用作配置文件。 AssetManager找不到它。 config.global和config.properties都位於項目的assets目錄中。 config類是在setUp()函數中生成的,然後調用readConfig來開始。下面是在主文件中的代碼:AssetManager無法在資產目錄中找到文件

protected void setUp() throws Exception { 
    super.setUp(); 
    mLithium = (LithiumExtension) Trio.getInstance(new LithiumExtension(this)) 
      .getExtension(); 
    config = StorefrontConfig.getInstance(); 
    Resources resources = getActivity().getResources(); 
    AssetManager asM = resources.getAssets(); 
    InputStream in = asM.open("config.global"); 
    OutputStream out = asM.openFd("config.properties").createOutputStream(); 
    config.readConfig(in, out); 
    setTestSettings(); 
} 

而對於配置代碼:

public class Config { 

private static Config instance; 
public Properties prop; 

static { 
    instance = new Config(); 
} 

private Config() { 
    prop = new Properties(); 
} 

public void readConfig(InputStream in, OutputStream out) { 

    try { 

     prop.load(in); 
     in.close(); 

     prop.store(out, "yay"); 
     out.close(); 
    } 
    catch (Exception e) { 
     System.out.println("Failed to create properties"); 
     System.exit(3); 
     Log.d("Config", "Failed to create properly initialized config class"); 
    } 
} 

public static Config getInstance() { 

    if(instance == null) 
     instance = new Config(); 
    return instance; 
} 

public String getProperty (String key) { 
    return prop.getProperty(key); 
} 
} 

在運行時,我得到了一個config.globaljava.io.FileNotFoundException。這是拋在代碼的asM.open("config.global")行。一直困在這一點上。任何幫助,將不勝感激!

+0

您能得到什麼,如果你登錄as的內容M.list(「」)'?(http://developer.android.com/reference/android/content/res/AssetManager.html#list(java.lang.String))另外,你是否清理過你的項目,因爲添加文件到資產? – Geobits

+0

我已經清理,刷新和重建整個項目。另外,出於某種原因,當我做Log.i時LogCat沒有輸出任何東西(asM.list(「」)[0],null) – user2433924

+1

它可能找不到合適的資產。嘗試將活動上下文傳遞給Tarsem在下面的註釋中建議的設置方法。 – Geobits

回答

2

接收上下文setUp(Context c),並使用這個獲得資產

因此通過 嘗試改變

AssetManager asM = resources.getAssets(); 

AssetManager asM = c.getAssets(); 
+0

所以,setUp()代碼實際上是在一個Abstract類中,所以我不能直接調用getAssets()。 – user2433924

+0

@ user2433924查看更新的答案! –

+0

仍然無法找到文件 – user2433924

相關問題