2010-11-02 13 views
25

Benim/res/raw/klasöründe (/res/raw/textfile.txt) bir kaynak dosyam var, bu işlem için android uygulamamdan okumaya çalışıyorum.Android'de kaynak dosyalarına eriş

public static void main(String[] args) { 

    File file = new File("res/raw/textfile.txt"); 

    FileInputStream fis = null; 
    BufferedInputStream bis = null; 
    DataInputStream dis = null; 

    try { 
     fis = new FileInputStream(file); 
     bis = new BufferedInputStream(fis); 
     dis = new DataInputStream(bis); 

     while (dis.available() != 0) { 
       // Do something with file 
      Log.d("GAME", dis.readLine()); 
     } 

     fis.close(); 
     bis.close(); 
     dis.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

Ben farklı bir yol sözdizimi çalıştı ama her zaman java.io.FileNotFoundException hatası alıyorum var. İşlem için /res/raw/textfile.txt dosyasına nasıl erişebilirim? Dosya dosyası = new File ("res/raw/textfile.txt"); Android'de yanlış yöntem mi?


* Cevap:

// Call the LoadText method and pass it the resourceId 
LoadText(R.raw.textfile); 

public void LoadText(int resourceId) { 
    // The InputStream opens the resourceId and sends it to the buffer 
    InputStream is = this.getResources().openRawResource(resourceId); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
    String readLine = null; 

    try { 
     // While the BufferedReader readLine is not null 
     while ((readLine = br.readLine()) != null) { 
     Log.d("TEXT", readLine); 
    } 

    // Close the InputStream and BufferedReader 
    is.close(); 
    br.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

bizi düşünün

new BufferedInputStream(getResources().openRawResource(...)); ardından akışı olarak dosyanın içeriği (o uzantısı olmadan dosyanın adı genellikle var) [Apache Commons] (http://commons.apache.org/proper/commons-io/). Orada 'IOUtils' ara. – JJD

cevap

23

:

getResources().openRawResource(...) döndüren bir InputStream

nokta aslında bir tamsayı R.raw bulunmalıdır ... senin dosya adına karşılık gelen muhtemelen R.raw.textfile

+0

Denedim: Dosya dosyası = yeni Dosya (R.raw.textfile); - getResources(). OpenRawResource (R.raw.textfile) dosyasını kullanmaya çalışacağım ve eğer yapabilirsem Dosyaya vereceğim. – Selzier

+0

"getResources(). OpenRawResource (R.raw.textfile)" yöntemini nasıl kullanırsam kullanırım "eclipse her zaman hata verir" yöntemi getResources() yöntemi, MyClass türü için tanımlanmamıştır ". – Selzier

+0

getResources(), Context sınıfının bir yöntemidir. Kaynakları yalnızca bağlamla ilgili olarak alabilirsiniz. – Falmarri

10

bu public static void main(String[] args) Eğer kod son derece yanlış uygulanması demektir olması Hemen aslında *. Neredeyse kesinlikle merhaba android öğreticilerden hiç geçmediniz. Bunu kesinlikle yapmalısın. Eğer Etkinlik/Araç çağrısından res/raw/textfile.txt bir dosya varsa

+1

+1 iyi yakalama! Bir android uygulaması XD – Cristian

+0

bir ana yöntem görmek komik görmek tür öğretici, hata günlük öğreticiler ve notepad öğretici her biri de dahil olmak üzere tüm merhaba android öğreticiler aracılığıyla oldum. Yine de java uzmanı değilim ve neden genel statik boşluk ana (String [] args) kullanılmasının yanlış olduğunu anlamıyorum. – Selzier

+2

çünkü Android uygulamaları çalıştırıyor. Şimdi, belki de kendi testinizi veya bir şeyinizi (neden olmasın?) Çalıştırmak için buna dahil olabilirsiniz, ancak Android dünyasında programınız asla kontrolde değildir. Belirli bir olay meydana geldiğinde (örneğin, kullanıcı bir düğmeye bastığında olduğu gibi), uygulamanızda karşılık gelen geri arama yöntemi çağrılır. Geri aranmanız bittiğinde, kontrol Android'e döner. –

İlgili konular