傳智播客java學習–3g開發Android2

來源:互聯網
上載者:User

使用檔案進行資料存放區:

Activity提供了openFileOutput()方法可以用於把資料輸出到檔案中,具體的實現過程與在J2SE環境中儲存資料到檔案中是一樣的。

public class FileActivity extends Activity {

    @Override public void onCreate(Bundle savedInstanceState) {

        ...

         FileOutputStream outStream = this.openFileOutput("itcast.txt", Context.MODE_PRIVATE);

         outStream.write("傳智播客".getBytes());

         outStream.close();  

    }

}

openFileOutput()方法的第一參數用於指定檔案名稱,不能包含路徑分隔字元“/” ,如果檔案不存在,Android 會自動建立它。建立的檔案儲存在/data/data/<package name>/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在交談視窗中展開android檔案夾,選擇下面的File
Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該檔案。

openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE    =  0

Context.MODE_APPEND    =  32768

Context.MODE_WORLD_READABLE =  1

Context.MODE_WORLD_WRITEABLE =  2

 

Context.MODE_PRIVATE : 為預設操作模式,代表該檔案是私人資料,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容,如果想把新寫入的內容追加到原檔案中。可以使用Context.MODE_APPEND

Context.MODE_APPEND : 模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該檔案。

MODE_WORLD_READABLE :表示當前檔案可以被其他應用讀取;MODE_WORLD_WRITEABLE :表示當前檔案可以被其他應用寫入。

如果希望檔案被其他應用讀和寫,可以傳入:

openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

 

android有一套自己的安全模型,當應用程式(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如檔案的時候,就需 要userid匹配。預設情況下,任何應用建立的檔案,sharedpreferences,資料庫都應該是私人的(位於/data/data /<package name>/files),其他程式無法訪問。除非在建立時指定了Context.MODE_WORLD_READABLE或者 Context.MODE_WORLD_WRITEABLE
,只有這樣其他程式才能正確訪問。

 

       把檔案存放在SDCard :

使用Activity的openFileOutput()方法儲存檔案,檔案是存放在手機空間上,一般手機的儲存空間不是很大,存放些小檔案還行,如果要存放像視頻這樣的大檔案,是不可行的。對於像視頻這樣的大檔案,我們可以把它存放在SDCard。 SDCard是幹什麼的?你可以把它看作是移動硬碟或隨身碟。

 

在模擬器中使用SDCard,你需要先建立一張SDCard卡(當然不是真的SDCard,只是鏡像檔案)。建立SDCard可以在Eclipse建立模擬器時隨同建立,也可以使用DOS命令進行建立,如下:

在Dos視窗中進入android SDK安裝路徑的tools目錄,輸入以下命令建立一張容量為2G的SDCard,檔案尾碼可以隨便取,建議使用.img:

mksdcard 2048M D:/AndroidTool/sdcard.img

 

在程式中訪問SDCard,你需要申請訪問SDCard的許可權。

在AndroidManifest.xml中加入訪問SDCard的許可權如下:

<!-- 在SDCard中建立與刪除檔案許可權 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!-- 往SDCard寫入資料許可權 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

       使用SAX或者DOM或者pull解析XML檔案:

SAX 是一個解析速度快並且佔用記憶體少的xml解析器,非常適合用於Android等行動裝置。 SAX解析XML檔案採用的是事件驅動,也就是說,它並不需要解析完整個文檔,在按內容順序解析文檔的過程中,SAX會判斷當前讀到的字元是否合法XML文法中的某部分,如果符合就會觸發事件。

DOM 解析XML檔案時,會將XML檔案的所有內容讀取到記憶體中,然後允許您使用DOM API遍曆XML樹、檢索所需的資料。使用DOM操作XML的代碼看起來比較直觀,並且,在某些方面比基於SAX的實現更加簡單。但是,因為DOM需要將 XML檔案的所有內容讀取到記憶體中,所以記憶體的消耗比較大,特別對於運行Android的行動裝置來說,因為裝置的資源比較寶貴,所以建議還是採用SAX 來解析XML檔案,當然,如果XML檔案的內容比較小採用DOM是可行的。

Pull 解析器的運行方式與 SAX 解析器相似。它提供了類似的事件,如:開始元素和結束元素事件,使用parser.next()可以進入下一個元素並觸發相應事件。事件將作為數值代碼被 發送,因此可以使用一個switch對感興趣的事件進行處理。當元素開始解析時,調用parser.nextText()方法可以擷取下一個Text類型 元素的值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.