2012-06-26 15 views
5

मैं अपने DatabaseHandler वर्ग लेकिन ग्रहण में एक फ़ाइल को पार्स करने की कोशिश कहते हैं:एक गतिविधि के बाहर का उपयोग करते हुए getAssets

विधि getAssets() प्रकार DatabaseHandler

इस के लिए अपरिभाषित है कोड है: टिम के लिए

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 15; 

    public DatabaseHandler(Context context) { 
     super(context, "rettinfo", null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d("Create: ", "Creating antidotlist"); 
     String CREATE_ANTIDOT_TABLE = "CREATE TABLE antidots (id INTEGER PRIMARY KEY antidot TEXT, dos TEXT)"; 
     Log.d("Create: ", CREATE_ANTIDOT_TABLE); 
     db.execSQL(CREATE_ANTIDOT_TABLE); 

     InputStream antidots = getAssets().open("antidot/antidots"); 
     InputStreamReader input = new InputStreamReader(antidots); 
     BufferedReader buffreader = new BufferedReader(input,2*1024); 
     String line; 
     while ((line = buffreader.readLine()) != null) { 
      String[] point_t = line.split(","); 
     } 
     antidots.close(); 
    } 

} 

अद्यतन

+०१२३५१६४१०६१

इस तरह ग्रहण न किसी भी त्रुटि

int i = 0; 
InputStream antidots; 
    try { 
     antidots = mCtx.getAssets().open("antidot/antidots"); 
     InputStreamReader input = new InputStreamReader(antidots); 
     BufferedReader buffreader = new BufferedReader(input,2*1024); 
     String line; 
     while ((line = buffreader.readLine()) != null) { 
      i++; 
      ContentValues values = new ContentValues(); 
      String[] antidot = line.split("#"); 
      int id = Integer.parseInt(antidot[0]); 
      values.put("id", id); 
      values.put("antidot", antidot[1]); 
      values.put("dos", antidot[2]); 
      db.insert("antidots", null, values);      
     } 
     antidots.close();   
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

हाँ प्रयास पकड़ सामान्य है। जब भी आप फ़ाइल io से निपट रहे हों, तो यह आपको कोशिश/पकड़ में कोड लपेट देगा। ऐसा इसलिए होता है क्योंकि फ़ाइल I/o संचालन में बहुत से सामान्य तरीके विफल हो सकते हैं। और कोशिश करें/पकड़ने के बिना आपका प्रोग्राम बस इस घटना में दुर्घटनाग्रस्त हो जाएगा कि i/o – FoamyGuy

+0

के साथ कोई समस्या है, यह भी ध्यान दें कि फ़ाइल I/O प्रयास करने के लिए जावा सम्मेलन के कारण है, और ग्रहण करने के लिए विशिष्ट नहीं है। – FoamyGuy

उत्तर

19

स्टोर Context है कि आप निर्माता से मिल तो getAssets() कि संदर्भ पर कॉल करने के लिए एक संदर्भ बनाते हैं।

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 15; 
    private Context mCtx; //<-- declare a Context reference 
    public DatabaseHandler(Context context) { 
     super(context, "rettinfo", null, DATABASE_VERSION); 
     mCtx = context; //<-- fill it with the Context you are passed 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d("Create: ", "Creating antidotlist"); 
     String CREATE_ANTIDOT_TABLE = "CREATE TABLE antidots (id INTEGER PRIMARY KEY antidot TEXT, dos TEXT)"; 
     Log.d("Create: ", CREATE_ANTIDOT_TABLE); 
     db.execSQL(CREATE_ANTIDOT_TABLE); 

     InputStream antidots = mCtx.getAssets().open("antidot/antidots"); //<-- call getAssets on your Context object. 
     InputStreamReader input = new InputStreamReader(antidots); 
     BufferedReader buffreader = new BufferedReader(input,2*1024); 
     String line; 
     while ((line = buffreader.readLine()) != null) { 
      String[] point_t = line.split(","); 
     } 
     antidots.close(); 
    } 

} 
+0

आपकी पोस्ट के लिए धन्यवाद, क्या यह सामान्य है कि ग्रहण प्रयास/पकड़ से घिरा होना चाहता है? – Laire

+0

यह किस लाइन को घेरना चाहता है? – FoamyGuy

+0

मैं अपनी पहली पोस्ट संपादित करता हूं – Laire

संबंधित मुद्दे