2014-09-23 85 views
-2

我正在處理一種雜誌應用程序,其中包含很多txt文件,我從中讀取文本(只讀不寫),而且我有點困惑,我已經閱讀關於文件存儲的文檔,但似乎仍然沒有正確的方式來存儲我的txt文件。這些文件應該放在資產中嗎?是否有可能在資產內有文件夾?如果是的話,我怎樣才能使用這些文件夾?存儲txt文件

回答

0

res/raw將是放置它們的好地方。如果您在原始資源文件夾中放置了一個名爲「article.txt」的文本文件,您可以先將文件放入InputStream中(注意「ctx」是活動繼承的上下文):

InputStream inputStream = ctx.getResources().openRawResource(R.raw.article); 

然後您將InputStream轉換爲字符串。這可以通過大約1000種不同的方式完成。這裏有一種方法:

InputStreamReader inputreader = new InputStreamReader(inputStream); 

BufferedReader buffreader = new BufferedReader(inputreader); 
String line; 
StringBuilder text = new StringBuilder(); 

try { 
    while ((line = buffreader.readLine()) != null) { 
     text.append(line); 
     text.append('\n'); 
    } 
} catch (IOException e) { 
    return null; 
} 

String fileContentsStr = text.toString(); 

這裏是一個完全有效的方法(使用上述轉換技術)把從原始文件夾中的文本文件轉換成一個字符串。我從這篇文章中獲得了Android read text raw resource file

public static String readRawTextFile(Context ctx, int resId) 
{ 
    InputStream inputStream = ctx.getResources().openRawResource(resId); 

    InputStreamReader inputreader = new InputStreamReader(inputStream); 
    BufferedReader buffreader = new BufferedReader(inputreader); 
    String line; 
    StringBuilder text = new StringBuilder(); 

    try { 
    while ((line = buffreader.readLine()) != null) { 
     text.append(line); 
     text.append('\n'); 
    } 
    } catch (IOException e) { 
    return null; 
    } 
    return text.toString(); 
} 

使用「article.txt」還在,你會調用此方法從活動中,像這樣:

readRawTextFile(this, R.raw.article); 
+0

謝謝你的回答,就是原始文件夾和文件夾的資產之間的差額?是否可以向他們添加文件夾層次結構? – james 2014-09-23 18:40:48

+0

這篇文章應該幫助你介紹Android項目的項目結構https://developer.android.com/tools/projects/index.html。無法將子文件夾添加到任何res文件夾,這包括值,drawable,raw和其他文件夾。但是,您可以在資產中添加子文件夾。我提供的答案是用於原始資源文件,但也有從資產文件夾和資產子文件夾讀入.txt文件的方法。 – erversteeg 2014-09-23 18:46:43

+0

是的,我知道謝謝你,這個問題不是關於閱讀它是關於什麼對於許多txt文件更好?生的?資產?沒關係? – james 2014-09-23 18:53:41