2013-11-01 19 views
0

確定這是問題:在Android中使用外部類從文件讀/讀?

我想做一個Android應用程序(聯繫應用程序)。我有3個班的問題。

  • 活性的MainPage
  • 的ContactManager
  • ContactStore的

的是的MainPage在Android應用在MainActivity。 ContactManager是一個管理應用程序中所有聯繫人的類。該類接收保存在我創建的列表(SortedList)中併發送到ContactStore類的聯繫信息。 ContactStore類有兩個方法:addToFile和loadFromFile。這個類從文件中讀寫。

ContactManager類向ContactStore發送和接收列表。

ContactStore適用於java,但對於android不起作用。

我不知道如何訪問ContactStore中android的內部存儲或外部存儲的位置。

這裏是我的類與重要的方法:

public class MainPage extends ListActivity { 

private static ContactManager contactManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_page); 


    contactManager = new ContactManager(this); 

    setListAdapter(new MainPageAdapter(this)); 

} 

的的ContactManager:

public class ContactManager { 


private SortedList<Contact> contactList = new SortedArrayList<Contact>(); 

private ContactStore contactStore; 

public ContactManager(Context context){ 
    super(); 
    this.contactStore = new ContactStore(context); 
    this.readContacts(); 
} 

/** 
* Add to ContactsList 
* @param firstName 
* @param lastName 
* @param cellPhone 
* @param workPhone 
* @param email 
*/ 
public void addContact(String firstName, String lastName, String cellPhone, String workPhone, String email){ 
    contactList.add(new Contact(firstName, lastName, cellPhone, workPhone, email)); 

    contactStore.addToFile(this.contactList); 
} 

/** 
* Read from contact list 
* @return the contact list 
* @throws FileNotFoundException 
*/ 
public void readContacts(){ 
    this.contactList.clear(); 

    contactStore.loadFromFile(this); 
} 

而且ContactStore的類:

public class ContactStore { 

private final File file = new File("Contacts.txt"); 


public ContactStore(Context context) { 
    super(); 

} 


public void addToFile(SortedList<Contact> contactList){ 

    try { 

     file.createNewFile(); 

     PrintWriter out = new PrintWriter(file); 

     try{ 
      for(int i=0;i<contactList.size();i++){ 
       out.println(contactList.get(i).toString()); 
      } 
     } 
     finally{ 
      out.close(); 
     } 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void loadFromFile(ContactManager contactManager){ 

    try { 
     Scanner in = new Scanner(file); 
     try{ 
      while(in.hasNextLine()){ 
       String line = in.nextLine(); 
       String[] tokens = line.split(" "); 
       contactManager.addContact(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4]); 

      } 
     } 
     finally{ 
      in.close(); 
     } 

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

} 

}

我知道,我h大道給予文件路徑(內部或外部存儲),但我不知道該怎麼做,因爲總是給我一個錯誤。如果你不明白,請告訴我。非常感謝,我希望你能幫助我。 ;)

回答

1

外部存儲(SD卡):

String root = Environment.getExternalStorageDirectory().getAbsolutePath(); 

內部存儲:

String root = context.getFilesDir(); 

因此您ContactStore的類的構造函數(因爲你需要在那裏的情況下):

private final File file; 

public ContactStore(Context context) { 
    super(); 
    String root = context.getFilesDir(); 
    file = new File(root + File.separator + "Contacts.txt"); 
} 
+0

你是我的英雄!!!!謝謝!我已經將上下文傳遞給ContactStore,但我不知道如何使用。但是,謝謝!現在它工作! –