編輯:Android開發實例
在寫Android的數據存儲之前,想溫故下Core Java中的I/O流。一是為鞏固基礎,二是為更好掌握Android的數據存儲打基礎!
IO:即輸入,輸出。學IO:
這是大致的學習路線圖,另外補充一點,NIO我也不太熟悉,相關筆記以後在補上!
java.io.*總共有86個類(如果沒有算錯的話),不建議每個類或接口都掌握,學習的目的是用於生產,所以掌握能干活的並且經常使用的類即可,我主張學於致用!
關於流的思考:
我們見過河流,相信不少人還在其中嬉戲打鬧游泳過。我喜歡河流,並且在其中裸泳是件很美妙的事情。河流通常都會有源頭並且大多位海拔較高或者相當的高區位,河流的終點往往是某大型湖泊或海洋,它流動的趨勢是從高向底,彎曲游走;它是動態的,是變化的!我們可以抽象些講: 是按一定規律運動的;再抽象點:是自然界中脈絡相通的排洩降水徑流的天然輸水通道;再再抽象點:河流是通道,是按某種軌跡運動變化的水的抽象!當淤泥過多時,它會阻塞膨脹;當大壩築起後,它可以蓄水防洪。它的載體是大地。
講河流與IO有什麼關系呢? 有個概念抽象的關系。IO中流是對有序數據抽象。那有序數據就好比是水,它的輸入不在是高海拔的山區而是鍵盤,鼠標等設備,它的輸出不在是湖泊與海洋而是文件或屏幕;水是變化動態的,有序的數據也是變化,動態的。IO會阻塞,也有緩存,java中的IO與平台無關,它的載體是操作系統。這就是相關性,也是我的感悟;不一定最好,只是可以通過生活中的事物進行聯想理解而以。
總結下: 流: 英譯stream:
我們回到具體的實現中來:數據從服務器通過網絡流向客戶端,我們稱Server端的程序為輸出流(把數據輸出到網絡),Client端內存負責從網絡裡讀取數據,稱之為:輸入流。
因此我們就能很好的以中間層為軸判斷輸入流與輸出流了!eg:網絡從Server端讀取數據然後向Client中寫入數據!
字節流與字符流:它們之的區別就在於數據單元不同而以;字節流操作的數據單元是8位的字節,而字符流操作的數據單元是16位的字節。
File與內容無關,它是文件本質上抽象並且包含一系列與文件相關的方法。
下面給出三段代碼:各位也可以試驗一下並觀察它們的區別,親自試驗之後,會有不一樣的收獲:
- static void demo1(String pathname) {
- File file = new File(pathname);
- // System.out.println("return : " + file.isFile());
- if (file.isDirectory()) {
- String[] temp = file.list();
- for (int i = 0; i < temp.length; i++) {
- File flag = new File(pathname, temp[i]);
- if (flag.isDirectory()) {
- demo1(flag.getPath());
- }
- System.out.println(flag);
- }
- }
- }
- static void demo2(String pathname) {
- File file = new File(pathname);
- // System.out.println("return : " + file.isDirectory());
- if (file.isDirectory()) {
- File[] temp = file.listFiles();
- File flag = null;
- for (int i = 0; i < temp.length; i++) {
- flag = temp[i];
- if (flag.isDirectory()) {
- demo2(flag.getPath());
- }
- // else{
- System.out.println(flag);
- // }
- }
- }
- }
- static void demo3(String pathname) {
- File file = new File(pathname);
- // System.out.println("return : " + file.isFile());
- if (file.isDirectory()) {
- String[] temp = file.list();
- for (int i = 0; i < temp.length; i++) {
- File flag = new File(temp[i]);
- if (flag.isDirectory()) {
- demo3(flag.getPath());
- }
- System.out.println(flag);
- }
- }
- }
main方法:
- public static void main(String[] args) {
- long num = System.currentTimeMillis();
- demo1(".");
- demo2(".");
- demo3(".");
- System.out.println(System.currentTimeMillis() - num);
- }
核心是:list()與listFiles()的操作。
另外在list系列方法有個“文件過濾器”接口:FilenameFilter ,其中有個accept方法;如果要過濾某個文件,把過濾條件寫在accept中既可;Easy!!
本文實例講述了Android編程實現QQ表情的發送和接收。分享給大家供大家參考,具體如下: 在自己做一個聊天應用練習的時候,需要用到表情,於是就想著模仿一下QQ表
本文介紹一個簡易的標准體重計算器Android應用的開發實例。此功能在以前的手
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
分類 notification有以下幾種: 1>普通notification 1.內容標題 2.大圖標 3.內