我可以將文本文件放在庫項目的文件夾res \ raw中,但是讀取它似乎需要上下文引用。任何人都可以對此有所瞭解嗎?是否可以在Android庫項目中讀取沒有上下文引用的原始文本文件
10
A
回答
19
看看我的答案here來看看如何從POJO讀取文件。
通常,res文件夾應該通過ADT插件自動添加到項目構建路徑中。假設你有下RES /原始文件夾中存儲的test.txt,而不android.content.Context閱讀:
String file = "raw/test.txt"; // res/raw/test.txt also work.
InputStream in = this.getClass().getClassLoader().getResourceAsStream(file);
我有一個老版本的SDK之前這樣做,它應該與最新的SDK正常工作。嘗試一下,看看這是否有幫助。
3
爲了訪問資源,你需要一個上下文。請參閱developer.android站點上的Context.class的定義
有關應用程序環境的全局信息的接口。這個 是一個抽象類,其實現由Android 系統提供。它允許訪問特定應用的資源和 類,以及向上調用應用程序級的操作,如 開展活動,廣播和接收意圖等
因此,通過上下文可以訪問一個資源文件。您可以創建另一個類並將活動的上下文傳遞給它。創建一個讀取指定資源文件的方法。
例如:
public class ReadRawFile {
//Private Variable
private Context mContext;
/**
*
* Default Constructor
*
* @param context activity's context
*/
public ReadRawFile(Context context){
this.mContext = context;
}
/**
*
* @param str input stream used from readRawResource function
* @param x integer used for reading input stream
* @param bo output stream
*/
private void writeBuffer(InputStream str, int x, ByteArrayOutputStream bo){
//not hitting end
while(x!=-1){
//write to output buffer
bo.write(x);
try {
//read next
x = str.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @return output file to string
*/
public String readRawResource(){
//declare variables
InputStream rawUniversities = mContext.getResources().openRawResource(R.raw.universities);
ByteArrayOutputStream bt = new ByteArrayOutputStream();
int universityInteger;
try{
//read/write
universityInteger = rawUniversities.read();
writeBuffer(rawUniversities, universityInteger, bt);
}catch(IOException e){
e.printStackTrace();
}
//return string format of file
return bt.toString();
}
}
相關問題
- 1. 未正確讀取Android文本文件(在原始目錄中)
- 2. 是否可以使用Perl讀取pdf文件中的文本?
- 3. 閱讀Android原始文本文件
- 4. 是否有可能在BitBucket上獲取原始文件?
- 5. Apache Ant:是否可以插入/替換原始文本文件中的文本?
- 6. 是否可以爲Android項目使用ios數據庫文件?
- 7. 是否可以在代碼中引用項目文件?
- 8. 在ListView中單擊項目時讀取文本文件Android
- 9. 是否可以從沒有外部庫的PDF文件中提取tiff文件?
- 10. 如何在android中獲取原始文件或原始目錄?
- 11. 從項目中的原始文件夾讀取.pdf
- 12. 是否可以讀取文本文件並進行檢查?
- 13. 是否可以讀取鎖定文件?
- 14. 是否可以讀取.exe文件?
- 15. Python:是否可以在沒有文本文件的情況下設置高分?
- 16. 如何從android原始文件夾讀取大於5mb的文本文件?
- 17. 是否有可能在Android中讀取.so文件?
- 18. 是否可以在Android項目中引用jre系統庫?
- 19. 是否可以在DocumentContext的富文本項目上顯示文本?
- 20. 是否可以讀取存儲在計算機上的文件?
- 21. 有沒有可能在iText庫中讀取pdf文檔android
- 22. Grails是否可以從遠程文件目錄中讀取?
- 23. Android庫項目:需要檢索沒有上下文的資源
- 24. 從android本地庫中獲取原始的dex文件
- 25. 是否可以將上傳的文件包含到項目中?
- 26. 用rvest讀取文檔正文的原始文本?
- 27. 在android中讀取文本文件
- 28. 在android中讀取文本文件
- 29. 從r.raw上讀取文本文件android
- 30. 是否有可能在C#中正確讀取錯誤BOM的文本文件?
感謝您的提示。我剛剛嘗試過。 Eclipse不喜歡將文件放在res下,所以我讓文件保留在res \ raw中。 getClassLoader()。getResourceAsStream(「text.txt」)或this.getClass()。getClassLoader()。getResourceAsStream(「raw \ text.txt」) – Hong 2012-03-24 21:55:12
@Hong,我在我的Mac上使用SDK r16嘗試過,現在我可以確認「res/raw/test.txt」和「raw/test.txt」。而「test.txt」會拋出NPE。請注意,您需要斜槓(/),而不是反斜槓(\\)。 – yorkw 2012-03-24 22:21:04
是的!有用!它也在靜態構造函數中工作,以便每次調用該方法時都不必執行此類讀取。非常感謝。 – Hong 2012-03-24 22:31:23