2015-07-13 127 views
0

我嘗試使用JMatIO在Android 4.4中加載.mat文件。如何加載Android原始文件夾中的* .mat文件

.mat文件位於外部存儲器中時,它運行良好,但當文件位於應用程序的raw文件夾中時,該功能無效。目前,該應用程序找不到任何*.mat文件。該日誌只是打印消息,「無法加載矩陣文件」。

下面是代碼我使用:

try { 
     mfr = new MatFileReader("android.resource://" + getPackageName() + "/raw/rm.mat"); 
} catch (IOException e) { 
     e.printStackTrace(); 
     Log.d(TAG, "fail to load matrix file"); 
     System.exit(0); 
} 
if (mfr != null) { 
     Log.d(TAG, "Success to load matrix file"); 
} 

我怎樣才能成功地加載該文件?

+0

這是哪個版本的Android?你得到什麼樣的錯誤?請將其添加到您的問題。而當你在這裏,請刪除[tag:mat]標籤,因爲你的問題與'OpenCV'無關...... –

+0

謝謝。我添加它們! – jms0720

回答

1

它看起來像你無法使用此代碼正確地訪問文件:

mfr = new MatFileReader("android.resource://" + getPackageName() + "/raw/rm.mat"); 

從我個人理解,你想訪問其位於你\res\raw\文件夾中的文件。這通常使用R.raw.filname_without_extension完成。在你的情況,你應該嘗試:

mfr = new MatFileReader(getResources().openRawResource(R.raw.rm), MatFileType.Regular); 

如果您仍然有問題,看看這些資源:

  1. 文檔:Accessing Resources

    訪問原始文件

    雖然不常見,但您可能需要訪問您的原始文件es和 目錄。如果這樣做,那麼將您的文件保存在res/中將不適用於 您,因爲從res/讀取資源的唯一方法是使用 資源ID。相反,您可以將資源保存在assets/ 目錄中。

    保存在assets/目錄中的文件沒有給出資源ID,因此 不能通過R類或XML資源引用它們。 相反,您可以查詢assets/目錄中的文件,如正常的 文件系統,並使用AssetManager讀取原始數據。

    但是,如果要求所有的讀取原始數據(如 視頻或音頻文件)的能力,然後將該文件保存在res/raw/目錄和 讀取使用openRawResource()

  2. 一個字節流
  3. JMatIO來源:The relevant MatFileReader signature

  4. SO問題:R.raw.anything cannot be resolved
  5. SO問題:How to get File from R.raw
  6. SO問題:How to read file from res/raw by name
+0

謝謝。它幫助到我! – jms0720

相關問題